关于热键设置的问题【已解决】
本帖最后由 d5121226 于 2010-9-28 22:18 编辑我想请教的是有没有办法让当软件不是活动窗口的的时候,所设置的热键无效,但当软件为活动窗口的时候,热键有效。 来个另类的思路。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 623, 442, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 320, 328, 113, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
If WinActive("Form1") Then
If _IsPressed("7B") Then Exit;当前窗口如果活动,热键F12退出程序
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
如果希望把捕获的热键事件发送到激活程序中,您就必须先注销该热键然后再调用 Send 或 ControlSend 函数:
; 捕获并传递按键事件
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
; 这里可定义要做的各种任务
HotKeySet("{Esc}")
Send("{Esc}")
HotKeySet("{Esc}", "captureEsc")
EndFunc 嗯,多谢了。我试试看。 回复 2# 3mile
不错,这个挺好,而且易懂。多谢啊 如果希望把捕获的热键事件发送到激活程序中,您就必须先注销该热键然后再调用 Send 或 ControlSend 函数:
; ...
水木子 发表于 2010-9-28 12:12 http://www.autoitx.com/images/common/back.gif
这种方法我试过了,快捷键不好使了,不过窗口是否被激活。。。 本帖最后由 水木子 于 2010-9-28 15:07 编辑
2楼的方法思路不错,不过一直循环检测,有点浪费效率了。
我说的方法是这样,你不妨试试。
#include <WindowsConstants.au3>
HotKeySet('{F1}', '_Message')
$Form1 = GUICreate("Form1", 280, 250)
GUISetState()
Do
Until GUIGetMsg() = -3
Func _Message()
If WinActive($Form1) Then
MsgBox(0, '', '热键有效')
Else
HotKeySet('{F1}')
Send('{F1}')
HotKeySet('{F1}', '_Message')
EndIf
EndFunc ;==>_Message 不知道楼主解决没有?解决了请修改标题!谢谢! 多谢了啊。学习了 我也是为这个问题搜索而来。学习一下。谢谢 学习一下~谢了 AdlibRegister("HKSet");;;;----自动设置热键
Func HKSet()
If is("我的软件我的窗口") Then
HotKeySet("^s","_cs") ;启用
Return
Else
HotKeySet("^s") ;取消
Return
EndIf
EndFunc
;~
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=19206&pid=225567&fromuid=7653769 回复 3# 水木子
不错,这点就不知道了...感谢。
页:
[1]