微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何从我的全局钩子与我的应用程序进行通信?

我使用win32安装了一个全局钩子,但是我需要与我的主应用程序进行通信。 我应该怎么做? 我想DLL可以有一个函数,我设置我的应用程序HWND,然后钩可以sendmessage呢? 或者我应该search窗口标题,从钩子和sendmessage中find我的应用程序? 什么是最好的策略,sendmessage是最好的方法,或者我应该使用别的东西来沟通我的全局钩子。

Windows – 用C#命名pipe道性能build议

是否有任何目前更新的graphics用户界面less自动编译器?

Windows中需要rJava的问题

汉字显示为问号

C ++ – WinAPI获取所有连接的USB设备列表

使用PostMessage,而不是SendMessage:SendMessage可能需要一段时间,这可能会导致其他应用程序的延迟。

在初始化钩子时,使用你定义的函数将你的应用程序的HWND放到钩子DLL中。 这应该存储在DLL中的共享数据段中,如下所示:

#pragma data_seg(".shared") HWND hWndApp = NULL; #pragma data_seg() #pragma comment("linker,/section:.shared,rws") void setAppWnd(HWND hWnd) { hWndApp = hWnd; }

你可以在这里看到完整的例子。

你想要返回到你的应用程序的什么类型的信息?

SendMessage没有足够的能力传递除DWORD之外的所有进程的边界(例如,不能将指针传递到另一个进程的内存),但是如果你真的需要做的就是传递简单的值,那就足够了。

作为@interjay的状态,PostMessage是一个更好的计划,但最终仍然有相同的限制。

相关:“ 跨进程消息的危害 ”,“ PasswordSpy – 使用Windows钩子检索丢失的密码 ”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐