基本上,我正在寻找一个IsWindowMoving(HWND) Win32 API调用。我需要知道用户当前是否正在移动窗口。
窗口不属于我,因此无法侦听WM_SYSCOMMAND / SC_MOVE或WM_MOVING(由于32/64互操作性,我不想进行子类化或挂钩)。
基本上,我正在寻找一个IsWindowMoving(HWND) Win32 API调用。我需要知道用户当前是否正在移动窗口。
窗口不属于我,因此无法侦听WM_SYSCOMMAND / SC_MOVE或WM_MOVING(由于32/64互操作性,我不想进行子类化或挂钩)。
您可以使用GetGUIThreadInfo来实现此功能 - 不需要钩子。 使用GetWindowThreadProcessId获取您的hwnd的TID,然后检查GUITHREADINFO.flags和GUITHREADINFO.hwndMoveSize以查看您的窗口是否处于移动/大小循环中。
如果您不想使用钩子、子类化或其他类似的方法,我认为轮询可能是最简单的方法。使用 GetWindowRect
您可以跟踪窗口的先前和当前位置以及大小。通过计算差值,您可以检测用户是否正在移动(甚至调整)窗口。由于您正在处理 UI,因此无需过快地轮询(即使每秒2-5次也足够了)。