-
监听的两种状态
- 热键在监听时,可以区分为满足某种条件时生效(局部热键)和无条件生效(全局热键)
- 打个比方,有条件生效的热键,可以作为绑定某个程序的热键, 当这个目标程序启动时这些热键才会进行监听,而未启动时则不监听,不影响其它程序,也就是把热键的监听范围缩小在希望的范围之内
#If, GetKeyState("F10")
!p::
{
MsgBox, ALT+P被按下,该热键只在只在F10被按住时才生效(满足条件时生效)
Return
}
#If
^F9::
{
MsgBox, CTRL+F9被按下,局部热键后面如果要衔接全局热键时必须在局部热键末尾以 #If 结束,否则此处的全局热键会被视为局部热键,备注:<不同的局部热键之间可忽略>(无条件生效)
Return
}
#IfWinActive, 计算器
!p::
{
MsgBox, ALT+P被按下,该热键只在活动窗口名为<计算器>时生效(满足条件时生效)
Return
}
#IfWinNotActive, 计算器
!p::
{
MsgBox, ALT+P被按下,该热键只在活动窗口名非<计算器>时生效(满足条件时生效)
Return
}
#IfWinExist, 计算器
^!p::
{
MsgBox, CTRL+ALT+P被按下,该热键只在所有窗口中存在以<计算器>为名时生效,不论是否激活(满足条件时生效)
Return
}
#IfWinNotExist, 计算器
^!p::
{
MsgBox, CTRL+ALT+P被按下,该热键只在以<计算器>为名称的窗口不存在时才生效(满足条件时生效)
Return
}
-
有条件生效
- 可以看到
#If, GetKeyState("F10")
这下面的热键只在F10这个键被按下之后才会生效,这就是局部热键
-
无条件生效
- 后面的
^F9::
这个是衔接的全局热键,这里要注意的就是局部热键的结尾一定要加上#If
才行,否则统统会被当成局部热键
-
四种窗口状态
#IfWinActive, 计算器
当活动窗口名称为"计算器"时生效的热键#IfWinNotActive, 计算器
当活动窗口名称非"计算器"时生效的热键#IfWinExist, 计算器
当所有窗口中有"计算器"时生效的热键#IfWinNotExist, 计算器
当所有窗口中无"计算器"时生效的热键#If
局部热键结束符- 此处的计算器 就是WINDOWS自带的计算器,可以打开来测试一下