我正在尝试做什么:接收其他进程窗口(Spy ++)的消息。
例如:我打开了新的记事本窗口:http://i.stack.imgur.com/vNg6h.png
然后我将鼠标移到记事本窗口上,窗口会将此消息发送到记事本窗口(或主窗口子窗口):
WM_MOUSEMOVE xPos=100,yPos=200
我希望在鼠标事件发生时(通过事件或while循环)完全接收此消息(可能在使用Application.doEvents()
和Threading.Thread.Sleep(1)
循环时)。
我尝试过:
ManagedSpyLib
创建消息监听器(如果您将导入此库,则无法编译您的项目......如果您将成功导入此库,则不会为此任务构建)好的例子比对我的解释更好。 :)
答案 0 :(得分:1)
您需要查看HOOK。这就是SPY ++的工作原理。 但是,.Net不太适合这种情况,因为你必须使用很多WIN32 API函数。
答案 1 :(得分:1)
您需要的钩子是WH_CALLWNDPROC
和WH_GETMESSAGE
。这些都需要DLL注入。您无法注入托管代码,因此您需要使用非托管代码进行挂钩。然后,您可以将非托管注入的DLL与您的C#应用程序进行通信,但是您必须承认您在C#中编写挂钩代码的尝试失败。