c++builder - 无法在 Borland C++ Builder 中将 SetWindowsHookEx 与 LowLevelKeyboardProc 一起使用

标签 c++builder setwindowshookex

我正在开发一个软件,该软件在运行时必须阻止某些键盘输入。由于我已经谈到了一些无法实现这一愿望的问题,因此这里不再赘述(为了更好地理解情况,请阅读:How can I disable specific Windows hotkeys from inside a software using C++?)

我现在的问题是,我能够用 Qt 做我想做的事情,现在我必须将它传递给 Borland C++ Builder 6,但 Builder 的编译器拒绝代码:

SWH_return = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),0);

指出

[C++ Error] FrmMain.cpp(155): E2034 Cannot convert 'long (__stdcall *)(int,unsigned int,long)' to 'int (__stdcall *)()'

这很奇怪,一旦 Qt 发现这行代码没有任何问题并且一切运行正常。问题在于“SetWindowsHookEx”中包含“LowLevelKeyboardProc”。我尝试对代码进行一些更改,但没有成功。

有人可以帮我解决这个问题吗?

谢谢

莫默吉尔

注意:有关代码的更多详细信息,请访问我发布的链接。

最佳答案

我认为这与没有定义预处理器宏STRICT有关。

但是,简单的解决方法是将函数指针转换为 HOOKPROC

SWH_return = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, GetModuleHandle(NULL), 0);

关于c++builder - 无法在 Borland C++ Builder 中将 SetWindowsHookEx 与 LowLevelKeyboardProc 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007219/

相关文章:

hook - Win32 将 DLL 注入(inject)到针对 "Any CPU"构建的应用程序中

c# - 是否可以检测 Windows 何时自动断开低级键盘 Hook ?

char - 将 Unicodestring 转换为 Char[]

c++ - 通过 ShellExecute() 打印到 Dymo LabelWriter Turbo 时出现随机延迟

c++ - 来自非静态函数的 SetTimer

c# - 多次触发剪贴板更新事件

windows - Windows 64 位上的应用程序是否可以在 64 位和 32 位仿真层下执行代码?

C++ VCL 询问 .xlsb Excel 数据库

android - 使用 C++ Builder Bridge 文件时出错

c++ - 将 Vcl::Controls::TCaption aka (System::UnicodeString) 转换为 const char *