vb.net字符数 vbnet substring

vb.net 获取键盘输入的字符参考方法如下 , 具体解释已经注解在代码中;
/定义变量
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
static int hKeyboardHook = 0;
HookProc KeyboardHookProcedure;
/*************************
* 声明API函数
* ***********************/
// 安装钩子 (using System.Runtime.InteropServices;)
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern int SetWindowsHookEx(int idHook,HookProc lpfn, IntPtr hInstance, int threadId);
// 卸载钩子
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);
// 继续下一个钩子
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
// 取得当前线程编号(线程钩子需要用到)
[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId();
//钩子子程:就是钩子所要做的事情
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
if (nCode = 0)
{
/****************
//线程键盘钩子判断是否按下键
Keys keyData = https://www.04ip.com/post/(Keys)wParam;
if(lParam.ToInt32()0)
{
// 键盘按下
}
if(lParam.ToInt32()0)
{
// 键盘抬起
}
****************/
/****************
//全局键盘钩子判断是否按下键
wParam = = 0x100 // 键盘按下
wParam = = 0x101 // 键盘抬起
****************/
KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));//键盘
// 在这里添加你想要做是事情(比如把键盘nCode记录下来,搞个邮件发送程序发到自己的邮箱去)
return 0;//如果返回1,则结束消息 , 这个消息到此为止,不再传递 。如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者
}
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
//键盘结构
public struct KeyMSG
{
public int vkCode; //键值
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
// 安装钩子
public void HookStart()
{
if(hKeyboardHook == 0)
{
// 创建HookProc实例
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
// 设置线程钩子
hKeyboardHook = SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
//************************************
//键盘线程钩子
//SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId()); //GetCurrentThreadId()为要监视的线程ID,你完全可以自己写个方法获取QQ的线程哦
//键盘全局钩子,需要引用空间(using System.Reflection;)
//SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
//
//关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中 , 说明一下四个参数:
//idHook 钩子类型,即确定钩子监听何种消息 , 上面的代码中设为2 , 即监听键盘消息并且是线程钩子,如果是全局钩子监听键盘消息应设为13,
//线程钩子监听鼠标消息设为7,全局钩子监听鼠标消息设为14 。
//
//lpfn 钩子子程的地址指针 。如果dwThreadId参数为0 或是一个由别的进程创建的线程的标识 , lpfn必须指向DLL中的钩子子程 。除此以外 , lpfn可
//以指向当前进程的一段钩子子程代码 。钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数 。
//
//hInstance应用程序实例的句柄 。标识包含lpfn所指的子程的DLL 。如果threadId 标识当前进程创建的一个线程,而且子程代码位于当前
//进程,hInstance必须为NULL 。可以很简单的设定其为本应用程序的实例句柄 。
//
//threadedId 与安装的钩子子程相关联的线程的标识符 。如果为0,钩子子程与所有的线程关联 , 即为全局钩子 。
//************************************
// 如果设置钩子失败
if(hKeyboardHook == 0 )
{
HookStop();
throw new Exception("SetWindowsHookEx failed.");
}
}
}
// 卸载钩子
public void HookStop()
{
bool retKeyboard = true;
if(hKeyboardHook != 0)
{
retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
hKeyboardHook = 0;
}
【vb.net字符数 vbnet substring】if (!( retKeyboard))
throw new Exception("UnhookWindowsHookEx failed.");
}
vb.net中如何计算一个字符串在另一字符串中出现的次数Split好像只能计算单个字符vb.net字符数的吧,楼主要vb.net字符数的是字符串在字符串中vb.net字符数的个数,需要自己写函数vb.net字符数的,用指针定位,然后循环查找!
vb 中获取某个字符的个数VB6的代码:
Dim s As String
Dim Need as string'需要找的字符
Dim i as integer,Count as integer
s="abc.def.gh.i.gkl.mn"
Need = "."
Count = 0
For i=1 To Len(s)
if Mid(s,i,1)=Need then Count=Count 1
Next
Print Count
VB2005的代码:
Dim s As String = "abc.def.gh.i.gkl.mn"
Dim Need as string ="."'需要找的字符
Dim i ,Count as integer
For i=0 To s.length-1
if Mid(s,i,1)=Need then Count= 1
Next
Console.WriteLine(count)
(假设Option Strict为Off)
看了2楼的代码,思路很好的
不过Split函数要对多个字符串拆分赋值
还要用Preserve重新定义数组
在s过长时操作十分占用CPU
而如果字符串含有Unicode字符则不能用Byte数组处理
所以使用Mid函数(或.net的SubString函数)速度比较快
如果不限使用版本的话
VB2005中新增数据类型Char则是最好选择
Char类型的数组代替String操作起来快很多倍
VB.NET中怎样查看一个字符串中的字符出现了多少次?有很多方法,下面这种我觉得是最快的
Dim s As String = "sadkalkdjajjdhsdsa"
Console.WriteLine(s.Split("a").Length - 1)
vb.net怎样判断字符串是否为数字 分隔符(如逗号,空格,tab等) 数字的格式如果用常规编程的方法vb.net字符数:
直接用split(str1vb.net字符数,“vb.net字符数,”)的形式把str1字符串分成字符串数组vb.net字符数 , 然后用for循环判断每个数组元素是否是数字或者是字符串就可以vb.net字符数了 。
VB.NET如何把字符串(不全是数字或为空)转换成数字?明白vb.net字符数你vb.net字符数的意思vb.net字符数了,只要是字母都会转换成数字,帮vb.net字符数你写好vb.net字符数了("usernane"和 "pasward" 我这里写成"username" 和" password")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim username, password As String
Dim temp As Long
Dim r As String = ""
Dim v As String = TextBox1.Text
For Each c In v.ToString
If IsNumeric(c) Then
r = c
Else
r = ((Asc(c) - 65).ToString("00"))
End If
Next
username = r
temp = username * 3 - 500
password = CStr(temp)
TextBox2.Text = password
End Sub
关于vb.net字符数和vbnet substring的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读