テキスト領域にフォーカスがない場合にのみホットキーが発動するように変更します

テキスト領域にフォーカスがない場合にのみホットキーが発動するように変更します

以下のスクリプトは、ユーザーが「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]","","") はテキストをより適切に取得します。

関連情報