
以下のスクリプトは、ユーザーが「sub」と入力すると Sublime Text プログラムを起動します。
:*:sub:: ;
Run "C:\Program Files\Sublime Text 3\sublime_text.exe"
return
問題は、Word 文書、メモ帳、またはテキストを入力できる任意の場所などのテキスト領域にテキストを入力しているときにも、スクリプトが実行されることです。テキスト領域にフォーカスがないときにのみスクリプトが実行されるようにスクリプトを変更することはできますか?
答え1
:*b0:sub::
Sleep, 200
ControlGetText, OutputVar,,A
;MsgBox, %OutputVar%
;StringMid, a,OutputVar,StrLen(OutputVar)-2, 3
;MsgBox, %a%
;if not a="sub"
if not InStr(OutputVar,"sub")
Run "notepad"
return
これは非常にうまく動作しませんが、メモ帳では動作します。ControlGetTextの問題は、ほとんどのアプリからテキストを取得できない(間違ったコントロール、奇妙なエンコード)か、または私がそれを間違って使用することです。オートイットControlGetText("[Active]","","") はテキストをより適切に取得します。