AutoHotKey: 正则表达式匹配窗口

一, 故事的引子

最近的项目跟Visual Studio 2010有关,

组里面有个兄弟(C同学), 以前用惯了eclipse, 尤其喜欢Eclipse中的下面这几个快捷键

Alt+UP: Move Lines UP

Alt+Down: Move Lines Down

 

但是搜了一下microsoft vs2010的快捷键, 只有将当前行下移的命令,

SHIFT+ALT+T: Edit.LineTranspose,  Moves the line that contains the cursor below the next line.

 

这显然是一个Autohotkey问题, 毕竟我已经自己写过AHK脚本扩展vs2008了,

然而实际操作的时候却发现并非一帆风顺, 问题是这样的...

 

二,  问题来了 :

使用AU3_Spy.exe查看了, Visual Studio 2010同学的ahk_class, 他变成了下面这样:

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
HelloCSharp - Microsoft Visual Studio
ahk_class HwndWrapper[DefaultDomain;; 0dd60a86-3dfc-48fb-88a3-4a5cc4264d64 ]

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen: -473, 354 (less often used)
In Active Window: -469, 358

而且最主要的是, 对于每个实例, 上面标记出来的红字部分不完全相同,

比如有时候, 他会变成下面这样:

ahk_class HwndWrapper[DefaultDomain;;38b42acc-8391-49a6-8335-842dc65d6ca0]

 

三,  解决方案 :

可以把代码写成下面这个样子,

在文件头设置 SetTitleMatchMode RegEx

这样一来, 便可以像下面这个样子, 使用正则表达式, 匹配窗口的ahk_class

IfWinActive ahk_class HwndWrapper*

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
SetTitleMatchMode RegEx

; run StyleCop
#IfWinActive ahk_class HwndWrapper*
$F12::
;your code here
;MouseClick, left,  317,  213
;Sleep, 200
return
#IfWinActive

 

 

 

你可能感兴趣的:(正则表达式)