大佬教程收集整理的这篇文章主要介绍了键盘钩子用delphi寻找F12,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
2014/05/21 14:16:43.334 Code: 0 Key: 123 KeyStroke: 5767169 KeyStroke to Hex: 00580001 2014/05/21 14:16:43.446 Code: 0 Key: 123 KeyStroke: -1067974655 KeyStroke to Hex: C0580001 Note: this should be the keystroke that reflects KEYDOWN
我看到Keystroke是一种检查keydown的可能方法(WM_KEYDOWN $0100).我的问题是如何为WM_KEYDOWN测试击键?
这是我的回调函数:
function KeyboardHookProc(Code: Integer; Key: Word; KeyStroke: Longint) : LongInt; begin Result := 0; if Code = HC_NOREMOVE then exit; Result := CallNextHookEx(FkbHook,Code,Key,KeyStrokE); if Code < 0 then exit; { WM_KEYDOWN } if (KeyStroke and WM_KEYDOWN) = 0 then { this is where I need to test but this doesn't work! } begin if Code = HC_ACTION then begin case Key of vk_F12: begin TKPMF.Memo1.Lines.Add(FormatdatetiR_316_11845@e('yyyy/mm/dd hh:nn:ss.zzz',now)); TKPMF.Memo1.Lines.Add('Code: ' + IntToStr(CodE)); TKPMF.Memo1.Lines.Add('Key: ' + IntToStr(Key)); TKPMF.Memo1.Lines.Add('KeyStroke: ' + IntToStr(KeyStrokE)); TKPMF.Memo1.Lines.Add('KeyStroke to Hex: ' + LongToHex(KeyStrokE)); end; end; {CasE} end; end; end;
你的钩子不工作的原因是因为WM_KEYDOWN是一个窗口消息,而不是一个Keystroke标志. Read the documentation.您显示的两条消息的击键区别仅在于位30(上一个键状态)和31(过渡状态).
以上是大佬教程为你收集整理的键盘钩子用delphi寻找F12全部内容,希望文章能够帮你解决键盘钩子用delphi寻找F12所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。