找回密码
 加入
搜索
查看: 6192|回复: 12

[系统综合] 关于热键设置的问题【已解决】

  [复制链接]
发表于 2010-9-28 11:10:36 | 显示全部楼层 |阅读模式
本帖最后由 d5121226 于 2010-9-28 22:18 编辑

我想请教的是有没有办法让当软件不是活动窗口的的时候,所设置的热键无效,但当软件为活动窗口的时候,热键有效。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-28 12:03:42 | 显示全部楼层
来个另类的思路。
#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

评分

参与人数 1金钱 +30 收起 理由
水木子 + 30 学习啦!

查看全部评分

发表于 2010-9-28 12:12:32 | 显示全部楼层
如果希望把捕获的热键事件发送到激活程序中,您就必须先注销该热键然后再调用 Send 或 ControlSend 函数:
; 捕获并传递按键事件
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
    ; 这里可定义要做的各种任务
    HotKeySet("{Esc}")
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc
 楼主| 发表于 2010-9-28 14:36:08 | 显示全部楼层
嗯,多谢了。我试试看。
 楼主| 发表于 2010-9-28 14:39:30 | 显示全部楼层
回复 2# 3mile


    不错,这个挺好,而且易懂。多谢啊
 楼主| 发表于 2010-9-28 14:47:03 | 显示全部楼层
如果希望把捕获的热键事件发送到激活程序中,您就必须先注销该热键然后再调用 Send 或 ControlSend 函数:
; ...
水木子 发表于 2010-9-28 12:12



    这种方法我试过了,快捷键不好使了,不过窗口是否被激活。。。
发表于 2010-9-28 15:04:56 | 显示全部楼层
本帖最后由 水木子 于 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

评分

参与人数 1金钱 +30 收起 理由
afan + 30

查看全部评分

发表于 2010-9-28 16:23:31 | 显示全部楼层
不知道楼主解决没有?解决了请修改标题!谢谢!
 楼主| 发表于 2010-9-28 22:16:45 | 显示全部楼层
多谢了啊。学习了
发表于 2010-9-30 05:57:40 | 显示全部楼层
我也是为这个问题搜索而来。学习一下。谢谢
发表于 2010-10-26 17:32:31 | 显示全部楼层
学习一下~谢了
发表于 2010-10-27 18:37:50 | 显示全部楼层
AdlibRegister("HKSet");;;;----自动设置热键
Func HKSet()
        If is("我的软件我的窗口") Then
                HotKeySet("^s","_cs") ;启用
                Return
        Else
                HotKeySet("^s") ;取消
                Return
        EndIf
EndFunc
;~

http://www.autoitx.com/forum.php ... amp;fromuid=7653769
发表于 2010-10-28 09:32:59 | 显示全部楼层
回复 3# 水木子

不错,这点就不知道了...感谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:57 , Processed in 0.098427 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表