发表回复 
全局热键如何在某一窗口不生效?
2017-08-04, 11 : 59
全局热键如何在某一窗口不生效?
有个问题困扰我挺久了,如果我们定义了一个全局热键。
如Alt+3,但是我想在Word中指定其为格式刷,就是使用自带的功能。
这个该怎么写比较简单?是写在
#Ifwinactive{}
语句中吗?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-08-04, 14 : 50
RE: 全局热键如何在某一窗口不生效?
还有 #IfWinNotActive 和 #If 表达式

代码: (全选)
#IfWinNotActive ahk_exe word.exe
!3::
MsgBox, 当前程序非word,使用全局热键
return

;不是#IfWinActive
#If WinActive("ahk_exe word.exe")
!3::
MsgBox, 当前程序是word,使用格式刷
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢TSQJZKIHCVQXSBKA
2017-08-04, 17 : 17
RE: 全局热键如何在某一窗口不生效?
#If WinActive("ahk_exe word.exe")
~!3::Return ;这个意思是Alt+3在Word里面保持Word本身的热键操作
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 3用户表示感谢chocky99
2017-08-08, 16 : 36 (这个帖子最后修改于: 2017-08-08 16 : 54 by 谷子123.)
RE: 全局热键如何在某一窗口不生效?
谢谢您提供思路,
我已经明白了,不过楼下提供了一个更好的思路。
我们共同学习成长!
(2017-08-04 14 : 50)TSQJZKIHCVQXSBKA 提到:  还有 #IfWinNotActive 和 #If 表达式

代码: (全选)
#IfWinNotActive ahk_exe word.exe
!3::
MsgBox, 当前程序非word,使用全局热键
return

;不是#IfWinActive
#If WinActive("ahk_exe word.exe")
!3::
MsgBox, 当前程序是word,使用格式刷
return

谢谢您,这个思路不错,不过我尝试了下并不成功。
想了下,!3这样放弃了在本程序内的识别,但是回归全局热键了。
应该配合着VBA写自身的代码,或者用下面的方法。
!3::controlSend,MsoCommandBar1,!3,A
这个方法的通用性不好,可能ahk本身缺乏对全局和窗口逻辑的考量吧。

(2017-08-04 17 : 17)chocky99 提到:  #If WinActive("ahk_exe word.exe")
~!3::Return ;这个意思是Alt+3在Word里面保持Word本身的热键操作
return

我又测试了下面的回答,不能实现。
您提供的是最通用的表达方式,不过好啰嗦的表达方式。
不过我想了下,本来就应该是一个分支结构。
一般遇到的情况也少,我又有点洁癖,不喜欢把东西写乱了。
就用controlsend凑数吧。
!3::controlSend,MsoCommandBar1,!3,A
(2017-08-04 14 : 50)TSQJZKIHCVQXSBKA 提到:  还有 #IfWinNotActive 和 #If 表达式

代码: (全选)
#IfWinNotActive ahk_exe word.exe
!3::
MsgBox, 当前程序非word,使用全局热键
return

;不是#IfWinActive
#If WinActive("ahk_exe word.exe")
!3::
MsgBox, 当前程序是word,使用格式刷
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢谷子123
2017-08-08, 22 : 15 (这个帖子最后修改于: 2017-08-08 22 : 16 by TSQJZKIHCVQXSBKA.)
RE: 全局热键如何在某一窗口不生效?
没看懂Huh我自己用的更简单,全局热键不动,先判断当前窗口再执行,不需改动作的,发送原热键。同一个热键,不同程序不同动作,好写。
代码: (全选)
!3::
IfWinActive, ahk_exe word.exe
{
    Send !3
}
else IfWinActive, ahk_exe 1.exe
{
    MsgBox, 1
}
else
{
    MsgBox, 2
}
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢TSQJZKIHCVQXSBKA
2017-09-20, 20 : 12
RE: 全局热键如何在某一窗口不生效?
这个是想法很不错,借鉴一下。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合