C# - 判断用户是否正在移动窗口

6
我将检查用户是否在移动任何窗口(我的应用程序没有界面),并根据需要做出响应。你认为最好的方法是什么?我能确定用户是否点击标题栏吗?我能确定窗口是否正在被移动吗?然后,我需要在知道它正在被移动后获取窗口的hWnd。
2个回答

6
要想接收所有窗口(不仅限于Windows Forms窗口)的通知,您需要使用由SetWindowsHookEx() API函数设置的钩子。您需要一个WH_CALLWNDPROC钩子,这样您就可以看到Windows发送到窗口的WM_MOVE消息。
不幸的是,那是一个全局钩子。实现钩子回调的代码需要打包成DLL,以便可以将其注入到所有目标进程中。这打破了您使用C#完成此操作的计划,因为您无法注入CLR。该DLL必须用非托管代码编写。
code project提供了一种方法,包括所需的可注入非托管DLL。

4
这是一种窗口句柄监视的技术。您可以检查所有打开的句柄并等待移动消息。

编辑

.NET监视代码


那是一个很棒的工具,我用过一次。项目已经死了,但我怎么能错过学习窥探应用程序的机会呢。 :-) - Jason D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接