接收其他窗口的消息

时间:2013-12-08 10:33:39

标签: c# vb.net winforms pinvoke spy++

我正在尝试做什么:接收其他进程窗口(Spy ++)的消息。

例如:我打开了新的记事本窗口:http://i.stack.imgur.com/vNg6h.png

然后我将鼠标移到记事本窗口上,窗口会将此消息发送到记事本窗口(或主窗口子窗口):

WM_MOUSEMOVE xPos=100,yPos=200

我希望在鼠标事件发生时(通过事件或while循环)完全接收此消息(可能在使用Application.doEvents()Threading.Thread.Sleep(1)循环时)。

我尝试过:

好的例子比对我的解释更好。 :)

2 个答案:

答案 0 :(得分:1)

您需要查看HOOK。这就是SPY ++的工作原理。 但是,.Net不太适合这种情况,因为你必须使用很多WIN32 API函数。

答案 1 :(得分:1)

您需要的钩子是WH_CALLWNDPROCWH_GETMESSAGE。这些都需要DLL注入。您无法注入托管代码,因此您需要使用非托管代码进行挂钩。然后,您可以将非托管注入的DLL与您的C#应用​​程序进行通信,但是您必须承认您在C#中编写挂钩代码的尝试失败。