qq_29359511
qq_29359511
采纳率33.3%
2015-10-20 04:56

VB keybd_event应用中遇到的问题,哪位好心大侠能帮帮我

各位大侠,小弟为了实现模拟键盘动作,谢了这段代码。但是我点击BUTTON1时,text1敲下的是Q,而且大小写好像是随机的。键盘码65不是应该是a吗?我要完成一连串的键盘鼠标动作,这仅仅是个试验就碰到这种问题。哪位大侠能帮帮我啊,感激不尽
Public Class Form2
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwflags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare Sub keybd_event Lib "user32" (ByRef bVk As Byte, ByRef bScan As Byte, ByRef dwFlags As Long, ByRef dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox1.Focus()
    Call keybd_event(65, 0, 0, 0)
    Call keybd_event(65, 0, KEYEVENTF_KEYUP, 0)
End Sub

End Class

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • lzp_lrp WorldMobile 6年前

    VK_A为65是没错的,是不是你的shift或者大小写打开了?

    点赞 评论 复制链接分享
  • lzp_lrp WorldMobile 6年前

    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    ’参数bVk表示要模拟的按键的虚拟码,bScan表示该按键的扫描码(一般可以传0),dwFlags表示是按下键还是释放键(按下键为0,释放键为2),dwExtraInfo是扩展标志,一般没有用。
    keybd_event VK_Ctrl, 0, 0, 0 '按下Ctrl键
    keybd_event VK_C, 0, 0, 0 '按下C键
    Sleep 500 '延时500毫秒
    keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0 '释放C键
    keybd_event VK_Ctrl, 0, KEYEVENTF_KEYUP, 0 '释放Ctrl键
    keybd_event - 函数功能
    函数功能:该函数合成一次击键事件。系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数。在Windows NT中该函数己被使用Sendlhput来替代它。

    函数原型;VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);
    

    keybd_event - 相关参数
    参数:

    bVk:定义一个虚据拟键码。键码值必须在1~254之间。
    
    bScan:定义该键的硬件扫描码。
    
    dwFlags:定义函数操作的名个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。
    
    KEYEVENTF_EXETENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。DEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键交被接下。dwExtralnfo:定义与击键相关的附加的32位值。
    
    点赞 评论 复制链接分享

相关推荐