使用WinMove移动窗口非常慢

时间:2014-09-26 20:49:26

标签: performance window autohotkey

我正在尝试在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命令而不重新显示已关闭的窗口,我也会考虑它。)

1 个答案:

答案 0 :(得分:3)

SetWinDelay, -1可以解决您的问题。

“每次窗口命令后都会自动完成一个短暂的延迟(休眠)”,因此默认为100ms。