C# - 确定用户是否正在移动窗口

时间:2009-11-21 22:43:04

标签: c# windows winapi hook

我将检查用户是否正在移动任何窗口(我的应用程序没有接口)并做出相应的响应。您认为最好的方法是什么?我可以确定用户是否点击了标题栏吗?我可以确定窗口是否正在移动?然后,当我知道它被移动后,我需要抓住窗口的hWnd。

2 个答案:

答案 0 :(得分:6)

要获取所有窗口的通知,而不仅仅是Windows窗体,您需要使用SetWindowsHookEx()API函数设置的挂钩。您需要WH_CALLWNDPROC挂钩,以便可以看到Windows发送到窗口的WM_MOVE消息。

不幸的是,这是一个全球性的钩子。实现钩子回调的代码需要打包到DLL中,以便可以将其注入到所有目标进程中。这为你使用C#计划了一个漏洞,你不能注入CLR。 DLL必须以非托管代码编写。

这个code project提供了一种方法,包括你需要的非托管可注射DLL。

答案 1 :(得分:4)

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

修改

.NET spy code