LowLevelKeyboardProc()的Delphi正确签名

问题描述 投票:0回答:1

我正在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.shtmlhttps://www.swissdelphicenter.ch/en/showcode.php?id=1722)则显示

function KeyHookFunc(Code, VirtualKey, KeyStroke: Integer): LRESULT; stdcall;  

完全忽略TKBDLLHOOKSTRUCT记录指针。哪一个是正确的?我猜第一个是正确的,但我需要确定。我一直在使用这种签名,但是当我在同一单元(和DLL)中调用另一个Function并传递lParam时,在访问它时会导致访问冲突。 DLL中的所有功能和过程都使用stdcall

delphi hook keyboard-events
1个回答
0
投票

所有回调声明都是正确的,尽管后两个链接没有给出LowLevelKeyboardProc的示例,而是KeyboardProc的示例。 IOW,它们不是低级键盘挂钩。

请注意,由于使用整数而不是WPARAM,LPARAM和LRESULT,因此后两者不能在64位上工作。

© www.soinside.com 2019 - 2024. All rights reserved.