У меня возникли серьезные проблемы, связанные с тем, чтобы полностью контролировать элемент активации windows и заставить их фокус и переднее положение.
Для отладки более крупного сценария я создал отдельный сценарий для проверки использования WinActivate. и снова я наблюдаю разочаровывающее поведение, поскольку оно либо все вместе игнорирует название, которое я определил, либо терпит неудачу каким-либо другим способом. В меньшем тестовом скрипте я просто прошу, чтобы окно, в котором была активирована горячая клавиша, было установлено как активное после другого действия, в частности в поле ввода
Ниже приведен простой код для тестирования:
F10::
SetTitleMatchMode, 1
DetectHiddenWindows, Off
WinGetTitle, startTitle, A
msgbox % "Start Title = <" . startTitle . ">"
;WinActivate, startTitle
inputbox, mode, Test box, Testing,,260,160
sleep 500
WinActivate, startTitle
Return
Этот код неправильно активирует стартовое окно. Например, я выполняю горячую клавишу в пустом окне блокнота, и после отправки пробела в поле ввода фокус становится notepad ++ на моем втором мониторе. Второй раз, когда я нажимаю горячую клавишу из блокнота (или другого приложения), блокнот не теряет фокус. В третьем исполнении я снова начинаю с блокнота и после появления поля ввода переключаю фокус на другое окно. Я снова отправляю пустое поле ввода, но это новое окно остается в фокусе, а блокнот не активируется или не переводится в переднее положение.
Может кто-нибудь объяснить, что происходит с WinActivate?
У меня было похожее разочарование из-за неожиданных результатов создания файла сценария windows, и я думаю, что мне не хватает некоторых фундаментальных деталей в windows.