首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB用键盘全局HOOK的有关问题

2012-01-11 
VB用键盘全局HOOK的问题Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Lon

VB用键盘全局HOOK的问题
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Dim blnHook As Boolean
  Dim p As KBDLLHOOKSTRUCT
  Dim IsbKeyUp As Boolean
  Dim AltKey As Boolean


  Call CopyMemory(p, ByVal lParam, Len(p))

  AltKey = ((GetKeyState(18) And &H4000) = &H4000) ''''''''''ALT键
   
  If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Then
  IsbKeyUp = False
  ElseIf wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
  IsbKeyUp = True
  End If

  If AltKey And main.AltChk.Value Then

  Debug.Print "1" & AltKey
  If p.vkCode = vbKeyQ Then Call keybd_event(103, 0, IIf(IsbKeyUp, 2, 0), 0): blnHook = True
  End If

  If blnHook Then
  LowLevelKeyboardProc = 1
  Else
  Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
  End If

End Function


这是我拦截键盘按键的函数。
我要实现“将按ALT+Q改成按小键盘7”

这样为什么不行呢?我debug.print发现是改过的,但是在其它地方按ALT+Q却打不出7,求高手解答

[解决办法]
原来那个代码没找到,自己写了一下,发现写回缓冲区也无法改键.

貌似这招不管用了......有些怪,记得以前看那份代码时是可以的.得再找找.

目前看来你还是得用模拟键盘了.

探讨
我在魔兽上按ALT+X结果发现弹出了退出了对话框,那是按了ALT+Q的结果

热点排行