正如AutoIt 的开发人员所指出的,“鼠标移动”事件是调用次数第二多的消息,因此您可能还想在“0”消息之后对其进行预过滤。
#include <GUIConstantsEx.au3>
While 1
Switch GUIGetMsg()
Case 0, $GUI_EVENT_MOUSEMOVE
ContinueLoop
Case $control1
Func1()
Case $control2
Func2()
EndSwitch
WEnd
尝试查看几个消息源,即GUIGetMsg()
和TrayGetMsg()
,我遇到了困难,因为ContinueLoop
.
但解决方案其实很简单,不要缩短循环,只需中断开关(记住中断在 AutoIt 中是隐含的):
#include <GUIConstantsEx.au3>
While 1
Switch GUIGetMsg()
Case 0, $GUI_EVENT_MOUSEMOVE
; break
Case $control1
Func1()
Case $control2
Func2()
EndSwitch
Switch TrayGetMsg()
Case 0, $GUI_EVENT_MOUSEMOVE
; break
Case $control3
Func3()
Case $control4
Func4()
EndSwitch
WEnd
(我刚刚检查过,TrayGetMsg()
也发送$GUI_EVENT_MOUSEMOVE
消息)