打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何在vba中用keybd_event操作键盘?

2018年2月6日作者:ExcelOffice

键盘的工作原理:

当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示:

用户按下按键—–键盘驱动程序将此事件传递给操作系统—–操作系统将键盘事件插入消息队列—–键盘消息被发送到当前活动窗口。

api函数keybd_event可以实现键盘的各种个操作。

它的语法如下:

Visual Basic

VOID WINAPI keybd_event( _In_ BYTE bVk, _In_ BYTE bScan, _In_ DWORD dwFlags, _In_ ULONG_PTR dwExtraInfo);

1

2

3

4

5

6

VOID WINAPI keybd_event(

  _In_ BYTE      bVk,

  _In_ BYTE      bScan,

  _In_ DWORD     dwFlags,

  _In_ ULONG_PTR dwExtraInfo

);

其中bVk参数为按键的虚拟码,具体的按键的虚拟码可以见链接。

bScan参数 为按键的扫描码,一般可以不提供,直接输入0。

以下代码是api函数keybd_event实现按下F2键的效果:

Visual Basic

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Const KEYEVENTF_KEYUP = &H2Const VK_F2 = &H71Sub QQ1722187970() '按下F2 keybd_event VK_F2, 0, 0, 0 '释放F2 keybd_event VK_F2, 0, KEYEVENTF_KEYUP, 0End Sub

1

2

3

4

5

6

7

8

9

10

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Const KEYEVENTF_KEYUP = &H2

Const VK_F2 = &H71

Sub QQ1722187970()

    '按下F2

    keybd_event VK_F2, 0, 0, 0

    '释放F2

    keybd_event VK_F2, 0, KEYEVENTF_KEYUP, 0

End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何用sendmessage 模拟键盘按键?!
模拟键盘输入
vb数字操作机器人软件代码
How To Toggle the NUM LOCK, CAPS LOCK, and SCROLL LOCK Keys
如何模拟键盘操作(c++版本)
C 语言实现模拟键盘输入
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服