c++ - Win32 C++ 可以通过过程发送额外信息

标签 c++ winapi procedure handle

我一直在努力避免将任何窗口句柄存储为全局句柄。到目前为止,我一直很好。

我现在正在使用键盘 Hook 程序,并且我正在尝试找到(如果有的话)将我的主窗口句柄传递给它。

如果真的不能用简单的方式完成,我可以让主窗口句柄全局化。

LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);

有没有一种方法可以在其中一个参数中包含句柄?

谢谢。

最佳答案

看来您正在寻找一种将状态对象传递给 KeyboardProc 的方法。您可以按照说明进行操作 here , 使用 thunk 对象。这样,KeyboardProc 可以是您的 C++ 类的非静态成员方法,没有全局变量。这有点hack,但是非常方便。 ATL 库(atlstdthunk.h 中的CStdCallThunk)使用了类似的技术。因为certain issues with DEP (数据执行保护),你最好使用 thunk 的 ATL 实现。

关于c++ - Win32 C++ 可以通过过程发送额外信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324296/

相关文章:

winapi - 为什么 CreateProcessWithTokenW 因 ERROR_ACCESS_DENIED 而失败

mysql - 如果存在则更新,否则插入不起作用

mysql - 在过程中使用变量值创建 MySQL 查询

c++ - 无法初始化数组

c++ - 使用 for 循环是否比在 C++ 中将内容保存在 vector 中更快?

c - 用 __stdcall 替换 FAR 和 PASCAL

mysql - 找不到MySQL语法错误在哪里

c++ - QGeoPath 与 QGeoPolygon

c++ - 打开 DBX 和 BAT Outlook 文件

winapi - 如何检测是否有网络摄像头连接到 PC?