1

基本上,我正在寻找 IsWindowMoving(HWND) Win32 API 调用。我需要知道用户当前是否正在移动窗口。

该窗口不属于我,因此无法监听 WM_SYSCOMMAND / SC_MOVE 或 WM_MOVING(由于 32/64 互操作,我不想子类化或挂钩)。

4

3 回答 3

2

如果该窗口不属于您并且您不打算窥探消息,那么我认为最好的办法就是掌握该窗口的句柄。这将您限制为存在于句柄上的任何信息函数调用。我知道没有这样的调用可以通知用户窗口正在移动。

你可能不走运。

于 2009-04-06T14:21:30.323 回答
2

您可以使用GetGUIThreadInfo执行此操作- 无需挂钩。使用 GetWindowThreadProcessId 获取您的 hwnd 的 TID,然后检查 GUITHREADINFO.flags 和 GUITHREADINFO.hwndMoveSize 以查看您的窗口是否处于移动/大小循环中。

于 2009-04-20T17:55:25.467 回答
1

如果您不想挂钩、子类或其他类似的东西,我认为轮询可能是最简单的方法。使用GetWindowRect您可以跟踪窗口的先前和当前位置和大小。执行增量可以让您检测用户是否正在移动(甚至调整大小)窗口。由于您正在处理 UI,因此无需太快进行轮询(即使每秒 2-5 次也足够了)。

于 2009-04-20T18:01:57.527 回答