
Ниже приведен скрипт, который запускает программу 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]","","") извлекает текст намного лучше.