我正在尝试在AutoHotkey中实现一种窗口对接功能,并且在使用WinMove
移动窗口时遇到问题。
在我的消息处理程序中,我检测被移动的窗口是否有任何依赖项并根据需要移动它们。问题是使用WinMove
移动dockee会导致非常缓慢且不稳定的拖动运动。奇怪的是,CPU负载不上升,所以它不是由坏循环或其他类似的。
如果我使用Gui,Show
命令,它会产生一个漂亮的流畅运动,但是如果停靠的窗口关闭并且移动了它的父级,则dockee将重新显示为一个薄的~5x10像素的窗口。我尝试对hide
命令使用Gui
选项,并在Windows的关闭处理程序中专门添加对Gui, Destroy
的调用,但都没有帮助。此外,使用Gui
命令意味着它不仅更加混乱,而且除了句柄之外我还必须存储Gui编号,这是不理想的。
; Works and leaves closed windows closed, but is very slow
WinMove, ahk_id %dHWND%,, dX, dY
; This works and is fast, but requires storing the GUI # and closed windows reappear
Gui, % (Dock[dHWND, "gui"] ? Dock[dHWND, "gui"] . ":" : "") . "Show", % "hide na x" . dX " y" . dY
有谁知道为什么WinMove
如此缓慢以及如何解决它? (如果可以修复Gui
命令而不重新显示已关闭的窗口,我也会考虑它。)
答案 0 :(得分:3)
SetWinDelay, -1
可以解决您的问题。
“每次窗口命令后都会自动完成一个短暂的延迟(休眠)”,因此默认为100ms。