TraceLife

真正的幸福,在于对平淡生活的热爱……

导航

AutoIt - Sends simulated keystrokes to the inactive window.

Posted on 2012-03-15 18:47  hallo  阅读(353)  评论(0编辑  收藏  举报

要想给失去焦点的窗体(inactive window)创建 “快捷键” 需要使用 HotKeySet 函数进行关联,而不能使用 GUISetAccelerators 给窗体或空间关联快捷方式。

1 $Form1 = GUICreate("AcceleratorDemo", 160, 60, -1, -1)
2 Opt("GUICoordMode", 2)
3 $Btn1 = GUICtrlCreateButton("Button1", 30, 10 )
4 $Btn2 = GUICtrlCreateButton("Button2", 0, -1)
5 ;Dim $AccelKeys[2][2]=[["{F9}" , $Btn1], ["a", $Btn2]] ;
6 ;GUISetAccelerators($AccelKeys)
7 GUISetState(@SW_SHOW)

因为 GUISetAccelerator 只能给处于激活状态的窗体进行快捷关联。如果窗体失去焦点时,对应的 “加速键” 就不起作用了。通过 HotKeySet 直接绑定需要调用的函数即可。

 

要弄清 “加速键” 和 “热键” 之间的关系,两者都是用于处理键盘事件,然后转由相应的处理函数处理。但两者应用范围不同。“加速键” 由于同应用程序上下文相关,所以仅对处于焦点的窗体起作用。而 “热键” 则在系统范围内都有用。