如何在C#中接收非托管Win32和Win32 64应用程序的windows消息?

如何在C#中接收非托管Win32和Win32 64应用程序的windows消息?,c#,.net,winapi,pinvoke,unmanaged,C#,.net,Winapi,Pinvoke,Unmanaged,我在Windows 7 64上有一个32位和64位的非托管应用程序 我想编写一个C#应用程序来接收它接收到的键盘消息,这样我就可以在某些按键上做某些事情,而对于其他按键,只需将其发送回应用程序,以免干扰它们 我不知道搜索这个的正确方法,所以不知道该怎么做 如果可能的话,我还想避免使用键盘挂钩。我只是想接收应用程序的键盘消息,这就是我要做的。这就是键盘挂钩的设计目的。没有任何替代方案不存在键盘挂钩的所有问题(可能还有一些其他问题)。请参阅关于向特定窗口添加挂钩。我不知道如何阅读其他应用程序的消息泵

我在Windows 7 64上有一个32位和64位的非托管应用程序

我想编写一个C#应用程序来接收它接收到的键盘消息,这样我就可以在某些按键上做某些事情,而对于其他按键,只需将其发送回应用程序,以免干扰它们

我不知道搜索这个的正确方法,所以不知道该怎么做


如果可能的话,我还想避免使用键盘挂钩。我只是想接收应用程序的键盘消息,这就是我要做的。

这就是键盘挂钩的设计目的。没有任何替代方案不存在键盘挂钩的所有问题(可能还有一些其他问题)。

请参阅关于向特定窗口添加挂钩。我不知道如何阅读其他应用程序的消息泵。你可以使用IMessageFilter,但它只能在当前应用程序中工作…

谢谢,但有人告诉我,我可以挂接到应用程序的消息泵并解释它们,另一个问题是键盘挂钩(低级别)我必须使用的是全局的,所以必须让它过滤所有其他按键,除非它们来自我的应用程序。听起来你在谈论注入DLL和子类化。这(1)对.NET来说并不容易,(2)比键盘挂钩更不稳定。谢谢,我在这里读到了,基本上想做一些类似的事情:那么它仍然是DLL注入和子类化吗?第二个答案建议使用WH_CALLWNDPROC为应用程序创建一个非全局的钩子。这可能吗?你认为呢?安装单线程钩子而不是全局钩子肯定有好处。。。但是