【发布时间】:2019-12-26 17:38:50
【问题描述】:
我正在 Delphi 2007 和 Windows 10 中编写一个全局键盘挂钩。我为 Delphi LowLevelKeyboardProc 回调找到了不同的签名。像这样的人和 Windows 文档 (https://docs.microsoft.com/es-es/previous-versions/windows/desktop/legacy/ms644985(v=vs.85))
LowLevelKeyboardProc() never is executed
提示 lparam 是指向 TKBDLLHOOKSTRUCT 记录的指针。
然而其他的(http://www.delphifaq.com/faq/delphi_windows_API/f512.shtml 和https://www.swissdelphicenter.ch/en/showcode.php?id=1722),显示
function KeyHookFunc(Code, VirtualKey, KeyStroke: Integer): LRESULT; stdcall;
完全忽略 TKBDLLHOOKSTRUCT 记录指针。
哪个是正确的?
我猜第一个是正确的,但我需要确定。我一直在使用这样的签名,但是当我在同一单元(和 DLL)中调用另一个 Function 并传递 lParam 时,它会在访问它时导致访问冲突。 DLL 中的所有函数和过程都使用 stdcall
【问题讨论】:
-
MS 链接正确。很难说为什么您的代码不起作用,因为我们无法从这里看到您的代码。 Delphi 定义可以在 Windows.pas 中找到:
TFNHookProc = function (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
标签: delphi hook keyboard-events