基本上,我正在寻找一个IsWindowMoving(HWND)Win32 API调用。我需要知道用户当前是否正在移动窗口。
该窗口不属于我,因此无法监听WM_SYSCOMMAND / SC_MOVE或WM_MOVING(由于32/64互操作,我不想进行子类化或挂钩)。
答案 0 :(得分:1)
如果窗口不属于您并且您不打算窥探消息,那么我认为最好的办法就是抓住该窗口的句柄。这限制了您在句柄上存在的任何信息函数调用。我知道没有这样的电话可以通知用户正在移动窗口。
你可能运气不好。
答案 1 :(得分:1)
您可以使用GetGUIThreadInfo执行此操作 - 无需挂钩。使用GetWindowThreadProcessId获取hwnd的TID,然后检查GUITHREADINFO.flags和GUITHREADINFO.hwndMoveSize以查看您的窗口是否处于移动/大小循环中。
答案 2 :(得分:1)
如果您不想挂钩,子类或其他任何类似的东西,我认为轮询可能是最简单的方法。使用GetWindowRect
,您可以跟踪窗口的上一个和当前位置和大小。执行增量可以让您检测用户是否正在移动(甚至调整大小)窗口。由于您正在处理UI,因此无需进行太快的轮询(即使每秒2-5次也应该充足)。