有关使用AutoHotKey的问题特定于名为TeXnicCenter的Windows LaTeX编辑器。
因此,我试图编写我的第一个AutoHotKey(AHK)脚本,并且希望快捷方式仅在TeXniceCenter窗口处于活动状态时才可用。AHK提供了IfWinActive
应对这些情况的关键字,但是,在使用此关键字时遇到了一些困难。
这是我写的草稿文件:
SetTitleMatchMode, 2
SetTitleMatchMode, Slow
#IfWinActive, .* TeXnicCenter *.
!t::
Send \texttt{{}{}}
return
该#IfWinActive, .* TeXnicCenter *.
行无法在窗口名称中的某处找到模式“ TeXnicCenter”。
我还有其他选择
我主要在项目中使用TeXnicCenter,因此窗口名称显示为“ projectname -TeXnicCenter”,因此将其用作的参数是不可行的IfWinActive
。请注意,如果使用独立文档,则窗口名称为TeXnicCenter。
AHK提供的另一种选择是,您可以使用名为the ahk_class
of process的流程,该流程通常很直观(并且可以从名为Windows Spy的便捷捆绑的AHK工具中获得)-例如,对于Chrome,为Chrome_WidgetWin_1
。
但是,对于TeXnicCenter,它显示了奇怪的签名-例如,对于我的一个项目,它是Afx:000000013F370000:8:0000000000010005:0000000000000000:0000000012B80087
,而且不仅如此,它在TeXnicCenter窗口中不是恒定的,而对于其他进程则通常是恒定的。
我很茫然-有没有人有使用TeXnicCenter设置AHK并使用IfWinActive
关键字的经验?我感觉这可能会更好地针对TeXnicCenter的开发人员,但这是希望。
您曾经SetTitleMatchMode
将标题匹配模式设置为,2
这意味着窗口的标题可以在其中的任何地方包含WinTitle进行匹配。因此,它正在尝试.* TeXnicCenter *.
在标题栏中查找。您应该删除.*
和*.
(除非标题栏实际上包含那些-据我所知,它没有)。您可以将标题匹配模式设置为,RegEx
而不希望使用regex语法(即使这样,*.
还是不正确,应该为.*
)。
至于类,我在GraphEdit上遇到了同样的问题,对于主窗口,它具有Afx:1000000:b:10011:6:1070780
与相同模式相同但每个实例编号不同的窗口类。我通过使用正则表达式模式(SetTitleMatchMode, RegEx
)和类似这样的模式来解决它^Afx:.+:.:.+:.:.+$
—您可以指定冒号之间的确切数字位数,但不太可能需要。
(我最终通过使用组简化了整个过程。)
因此,在您的情况下,您将使用以下之一:
SetTitleMatchMode, 2
SetTitleMatchMode, Slow
#IfWinActive, TeXnicCenter
!t::
Send \texttt{{}{}}
return
SetTitleMatchMode, regex
SetTitleMatchMode, Slow
#IfWinActive, .* TeXnicCenter *.
!t::
Send \texttt{{}{}}
return
这是我的建议:
SetTitleMatchMode, regex
SetTitleMatchMode, Slow
GroupAdd, TXC, ^.*TeXnicCenter.*$ ahk_class ^Afx:.+:.:.+:.+:.*$
#IfWinExist, ahk_group TXC
!t::
Send \texttt{{}{}}
return
#IfWinExist
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句