永发信息网

使用GetAsyncKeyState实现的全局热键怎么设组合键?

答案:2  悬赏:70  手机版
解决时间 2021-04-06 19:51
  • 提问者网友:niaiwoma
  • 2021-04-06 15:45
使用GetAsyncKeyState实现的全局热键怎么设组合键?
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-04-06 16:39
我用F10键做例子啦。。具体自己做


'模块中
Option Explicit

Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Public hnexthookproc As Long
Public Const HC_ACTION = 0
Public Const WH_KEYBOARD = 2

Public Sub UnHookKBD()
If hnexthookproc 0 Then
UnhookWindowsHookEx hnexthookproc
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam A...侦测 有没有按到F10键
Form1;user32", iCode.hInstance, 0)
If hnexthookproc <, ByVal wParam As Long, wParam, lParam As Any) As Long

Public hnexthookproc As Long
Public Const HC_ACTION = 0
Public Const WH_KEYBOARD = 2

Public Sub UnHookKBD()
If hnexthookproc <, lParam)

Else
Call CallNextHookEx(hnexthookproc, lParam)
End If
End Function

'.Value = 1 ', AddressOf MyKBHFunc; (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib ", wParam.Check1; Alias "。具体自己做

', iCode;>user32"我用F10键做例子啦; 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, ByVal lpfn As Long;模块中
Option Explicit

Declare Function SetWindowsHookEx Lib "。;>讯息要处理
If iCode Exit Function
End If
If wParam = 121 Then ', ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib ", iCode; 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, ByVal lParam As Long) As Long

MyKBHFunc = 0 'Check选中
Call CallNextHookEx(hnexthookproc; 0 Then
MyKBHFunc = CallNextHookEx(hnexthookproc; 0 Then
UnhookWindowsHookEx hnexthookproc
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc <, ByVal wParam As Long, ByVal ncode As Long, App;> (ByVal hHook As Long, ByVal hmod As Long
全部回答
  • 1楼网友:詩光轨車
  • 2021-04-06 17:59
我用f10键做例子啦。。具体自己做 '模块中 option explicit declare function setwindowshookex lib "user32" alias "setwindowshookexa" (byval idhook as long, byval lpfn as long, byval hmod as long, byval dwthreadid as long) as long declare function unhookwindowshookex lib "user32" (byval hhook as long) as long declare function callnexthookex lib "user32" (byval hhook as long, byval ncode as long, byval wparam as long, lparam as any) as long public hnexthookproc as long public const hc_action = 0 public const wh_keyboard = 2 public sub unhookkbd() if hnexthookproc <> 0 then unhookwindowshookex hnexthookproc hnexthookproc = 0 end if end sub public function enablekbdhook() if hnexthookproc <> 0 then exit function end if hnexthookproc = setwindowshookex(wh_keyboard, addressof mykbhfunc, app.hinstance, 0) if hnexthookproc <> 0 then enablekbdhook = hnexthookproc end if end function public function mykbhfunc(byval icode as long, byval wparam as long, byval lparam as long) as long mykbhfunc = 0 '讯息要处理 if icode < 0 then mykbhfunc = callnexthookex(hnexthookproc, icode, wparam, lparam) exit function end if if wparam = 121 then '侦测 有没有按到f10键 form1.check1.value = 1 'check选中 call callnexthookex(hnexthookproc, icode, wparam, lparam) else call callnexthookex(hnexthookproc, icode, wparam, lparam) end if end function '以下在form private sub form_load() call enablekbdhook end sub private sub form_unload(cancel as integer) call unhookkbd end sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯