Что нового

Выполнение скрипта блокируется экранной заставкой Windows 10

Л. М. Гога

Новичок
Сообщения
5
Репутация
0
Возникла проблема при переходе на Windows 10 (в Win 7 такого не было). Скрипт периодически должен нажимать кнопку в программе. Для этого нужно активировать её окно (иначе она не нажимается). Если во время работы скрипта включается экранная заставка, скрипт не может активировать окно до тех пор, пока заставка не будет выключена.
Фрагмент кода:
Код:
WinActivate($window)     ; при включённой заставке не получается и дальнейший код не работает
WinWaitActive($window, "", 5000)
If WinActive($window) Then ControlClick($window, "", $button)

Как это можно решить? И можно ли вообще как-то нажимать кнопки без активации окна? В eMule, например, это получается, даже если программа свёрнута в трей.
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Возникла проблема при переходе на Windows 10 (в Win 7 такого не было). Скрипт периодически должен нажимать кнопку в программе. Для этого нужно активировать её окно (иначе она не нажимается). Если во время работы скрипта включается экранная заставка, скрипт не может активировать окно до тех пор, пока заставка не будет выключена.
Фрагмент кода:
Код:
WinActivate($window)     ; при включённой заставке не получается и дальнейший код не работает
WinWaitActive($window, "", 5000)
If WinActive($window) Then ControlClick($window, "", $button)

Как это можно решить? И можно ли вообще как-то нажимать кнопки без активации окна? В eMule, например, это получается, даже если программа свёрнута в трей.
Мне кажется это специфика винды, и без активного сеанса пользователя окно не может быть активным. Используй функции без ожидания активации окна, а именно просто ожидание окна и в этом случае попробуй.
 
Автор
Л. М. Гога

Л. М. Гога

Новичок
Сообщения
5
Репутация
0
Заставку можно деактивировать на время выполнения скрипта.
https://www.autoitscript.com/forum/topic/152381-screensaver-sleep-lock-and-power-save-disabling/
Как-то больно мудрёно. Да и заставка всё-таки нужна, скрипт работает постоянно, но нажатия требуются раз в полчаса.
Дописал проверку её запущенности и вырубания перед активацией:
Код:
Dim $ScreenSaver = "Mystify.scr"
; ...
If ProcessExists($ScreenSaver) Then ProcessClose($ScreenSaver)

Вроде так работает.
 
Верх