设定CapsLock ScrollLock NumLock
原本想说使用SendKeys来模拟按这三个Key,但是不会动,只好,再使用API来完成
这些程式都用到两次keybd_event,第一次模拟键按下,第二次模拟放开键,而我查
MSDN的文件,说SetNumLock只在NT上有效,95上没有作用,还真的呢!不过有时会成
功个一次,实在不了解为何如此。
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Public Sub SetNumLock(ByVal bLock As Boolean)
Dim i As Boolean, ScanCode As Long
i = CBool(GetKeyState(vbKeyNumlock) And vbShiftMask)
If i <> bLock Then
ScanCode = MapVirtualKey(vbKeyNumlock, 0)
Call keybd_event(vbKeyNumlock, ScanCode, 0, 0)
Call keybd_event(vbKeyNumlock, ScanCode, KEYEVENTF_KEYUP, 0)
End If
End Sub
Public Sub SetScrollLock(ByVal bLock As Boolean)
Dim i As Boolean, ScanCode As Long
i = CBool(GetKeyState(vbKeyScrollLock) And vbShiftMask)
If i <> bLock Then
ScanCode = MapVirtualKey(vbKeyScrollLock, 0)
Call keybd_event(vbKeyScrollLock, ScanCode, 0, 0)
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载