在vb 中怎么样用 keybd_event 模拟一字符串输入
我想用keybd_event向一个程序的文本框中输入一字符串(比如:“djskdi65^&$edYFSKsas125,.-9w”)我现在我只知道用Mid把串的字符一一的截...
我想用 keybd_event 向一个程序的文本框中输入一字符串(比如:“djskdi65^&$edYFSKsas125,.-9w”)
我现在我只知道用 Mid 把串的字符一一的截取出,现用API函数 VkKeyScan 取得各个字符的虚拟码和Shift键的状态 ,VkKeyScan 返回
长整型的值,低字包含了虚拟键码。高字则包含了下述标志:
位0指出 Shift 键已经按下;位1指出 Ctrl 键已经按下;位2指出 Alt 键已经按下 ,但是我不知道怎么样把这个长整型的值分割出得高位所指的标志和低位所指的虚拟码
请高手帮我用VB言语编写!
谢谢!! 展开
我现在我只知道用 Mid 把串的字符一一的截取出,现用API函数 VkKeyScan 取得各个字符的虚拟码和Shift键的状态 ,VkKeyScan 返回
长整型的值,低字包含了虚拟键码。高字则包含了下述标志:
位0指出 Shift 键已经按下;位1指出 Ctrl 键已经按下;位2指出 Alt 键已经按下 ,但是我不知道怎么样把这个长整型的值分割出得高位所指的标志和低位所指的虚拟码
请高手帮我用VB言语编写!
谢谢!! 展开
2个回答
展开全部
'这个需要用PostMessage,不能用keybd_event。
'看看这两个函数的声明就明白了。
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'因为PostMessage声明中有句柄参数hwnd,而keybd_event声明中没有句柄参数。
'所以PostMessage可以指向键盘消息发送对象的句柄hwnd,而keybd_event只能模拟按哪个键盘,不能把键盘消息发送到指定的对象,如文本框。
'"源码可以参考http://blog.csdn.net/wq1282/archive/2009/12/09/4972776.aspx"'
'看看这两个函数的声明就明白了。
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'因为PostMessage声明中有句柄参数hwnd,而keybd_event声明中没有句柄参数。
'所以PostMessage可以指向键盘消息发送对象的句柄hwnd,而keybd_event只能模拟按哪个键盘,不能把键盘消息发送到指定的对象,如文本框。
'"源码可以参考http://blog.csdn.net/wq1282/archive/2009/12/09/4972776.aspx"'
展开全部
既然你能得到那个长整型的数,也会用mid函数,那你唯一的问题就是如何将那个长整型的数转换成二进制了.
我给你写一个十进制转二进制的函数吧.
Private Function doit(a As Long)
Dim s As String
if a>0 then
Do While a > 1
s = a Mod 2 & s
a = a \ 2
Loop
doit = "1" & s
else
msgbox "只能转换大于0的数"
end if
End Function
这个函数的作用是将参数a从十进制转成二进制.
你可以用mid函数取得任意一位上面的数了.当然,你要结合字条串函数len才能活用.len("agbc")返回的结果就是字符串"agbc"的长度,这里就是4.
我给你写一个十进制转二进制的函数吧.
Private Function doit(a As Long)
Dim s As String
if a>0 then
Do While a > 1
s = a Mod 2 & s
a = a \ 2
Loop
doit = "1" & s
else
msgbox "只能转换大于0的数"
end if
End Function
这个函数的作用是将参数a从十进制转成二进制.
你可以用mid函数取得任意一位上面的数了.当然,你要结合字条串函数len才能活用.len("agbc")返回的结果就是字符串"agbc"的长度,这里就是4.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询