delphi 键盘全局钩子

delphi 键盘全局钩子,第1张

WH_KEYBOARD 对于全局的效果不好用, 换用 WH_KEYBOARD_LL 钩子吧。

示例代码:

//全局键盘钩子消息处理函数

function KeyHookProc(nCode:IntegerwP:WPARAMlP:LPARAM):LRESULTstdcall

var

pEvt: TEventMsg

vKey: Cardinal

begin

if (nCode = HC_ACTION) then begin

vKey := 0

case wP of

WM_SYSKEYDOWN, WM_KEYDOWN:

begin

pEvt := PEventMsg(LP)^

vKey := LOBYTE(pEvt.message)

case vKey of

......

end

end

end

WM_SYSKEYUP, WM_KEYUP:

end

end

result := CallNextHookEx(hKeyHook, nCode, wP, lP)

end

安装钩子:

hKeyHook := SetWindowsHookEx(WH_KEYBOARD_LL, @KeyHookProc, hInstance, 0)

(Delphi中带了)有点类似于DOS下的中断法度榜样,钩子函数可以监控体系某一类的事宜,像键盘和鼠标。在钩子函数里可以填写本身的代码。可以用以下几个函数来安装、卸载钩子:SetWindowsHookEx、CallNextHookEx、UnhookWindowsHookEx

。具体的可看Win32赞助。

1.有全局热键,即使本进程不在前台,也可以响应热键。

2.(全局)钩子可以“钩”住系统发往所有别的进程的消息,经自己的钩子函数处理后,可以选择是把该消息继续传递还是就此丢弃。

3.给别的进程发消息倒不需要钩子,

SendMessage/PostMessage通常就能满足。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/207327.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存