Измените горячую клавишу так, чтобы она срабатывала только тогда, когда текстовая область не находится в фокусе

Измените горячую клавишу так, чтобы она срабатывала только тогда, когда текстовая область не находится в фокусе

Ниже приведен скрипт, который запускает программу Sublime Text, когда пользователь вводит «sub»:

:*: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]","","") извлекает текст намного лучше.

Связанный контент