Что нового

Дополнить скрипт

Сообщения
15
Репутация
-1
Есть скрипт, отслеживающий изменение одного пикселя и сигнализирующий об этом
Нужно сделать так, чтобы он работал только, когда активно определённое окно
То есть, например, если оно свёрнуто, то выполнение должно приостановиться, а когда раскрываешь, то должен сам активироваться
Команды для этого я по-моему нашел, но почемуто всёравно не работает. Возможно чтото не так делаю с именем окна, пока не могу понять
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
посмотрите справку о
Код:
WinWaitActive("окно")
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
дайте тело скрипта обрамленное в [AUTOIT][/AUTOIT] и посмотрим что можно сделать, ведь если есть с чем работать, то это можно доработать, с пустотой я помочь не могу.
 
Автор
R
Сообщения
15
Репутация
-1
С этим есть проблемы
Комп рабочий, без инета
В ручную на телефоне печатать придется
Я думал может я просто какую-то элементарную ошибку делаю
Просто только недавно связался с программой
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Тогда дам вам простой вариант который возможно придётся дорабатывать.
Код:
$name = "имя окна"

While True                        ;бесконечный цикл
   $active = WinWaitActive($name)
   If Not $active Then            ;если нужное окно не активно то спим секунду
      Sleep(1000)
   Else                              ;если окно активно то запускаем функцию work()
      work()
   EndIf
WEnd

Func work()
   ;тут код который должен выполняться
EndFunc
 
Автор
R
Сообщения
15
Репутация
-1
Тогда дам вам простой вариант который возможно придётся дорабатывать.
Код:
$name = "имя окна"

While True                        ;бесконечный цикл
   $active = WinWaitActive($name)
   If Not $active Then            ;если нужное окно не активно то спим секунду
      Sleep(1000)
   Else                              ;если окно активно то запускаем функцию work()
      work()
   EndIf
WEnd

Func work()
   ;тут код который должен выполняться
EndFunc
Благодарю
 

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
По компактнее, без лишнего sleep и if, так как WinWaitActivate без указания времени ожидания вторым параметром, будет и так висеть и ожидать пока указанное окно не станет активным.
Код:
$name = "имя окна"

While WinWaitActive($name)
   ;тут код который должен выполняться
WEnd
 
Автор
R
Сообщения
15
Репутация
-1
20211128_123349.jpg
Сообщение автоматически объединено:

Подскажите пожалуйста, что не так
Сообщение автоматически объединено:

Срабатывает как со свёрнутым, так и раскрытым
 
Последнее редактирование:

All2khoff

Продвинутый
Сообщения
347
Репутация
65
3ю строку кода уберите.
вы основную функцию выполняете независимо от того активно окно или нет
10я строка и 20 тоже минус
вместо 20 строки EndFunc если ниже нет.
 
Автор
R
Сообщения
15
Репутация
-1
3ю строку кода уберите.
вы основную функцию выполняете независимо от того активно окно или нет
10я строка и 20 тоже минус
вместо 20 строки EndFunc если ниже нет.
Это исправил, всё работает также
Возможно я неправильно пишу название окна, с которым связана работа
Мне надо полностью его переписать? Или это название вообще подругому должно выглядеть?
 

All2khoff

Продвинутый
Сообщения
347
Репутация
65
важно правильное написанию включая пробелы, очень удобно эту информацию брать с помощью AutoIt Window Info ищите в пуске в каталоге autoit
 

MaxMade

Новичок
Сообщения
1
Репутация
0
6я строка -
Код:
While WinWaitActive("$name")
замените на
Код:
While WinWaitActive($name)
 
Автор
R
Сообщения
15
Репутация
-1
Всё исправил, как сказали, заработало
Осталась последняя проблема
Срабатывает при сворачивании и разворачивании окна, к которому привязан скрипт
Это есть возможность убрать?
 

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
Срабатывает при сворачивании и разворачивании окна, к которому привязан скрипт
Разве что как только ваш код определил активное окно, добавить после этого задержку на секунду или меньше или больше, и после задержки еще раз проверить осталось ли окно активным. T.E.
Код:
While WinWaitActive($name)
   Sleep(1000)
   If Not WinWaitActive($name, 1) Then ContinueLoop
   Example()
WEnd

Есть и другое решение, но там уже нужно будет регистрировать/перехватывать сообщения окна - что еще геморойно и больше кода.
 
Автор
R
Сообщения
15
Репутация
-1
Разве что как только ваш код определил активное окно, добавить после этого задержку на секунду или меньше или больше, и после задержки еще раз проверить осталось ли окно активным. T.E.
Код:
While WinWaitActive($name)
   Sleep(1000)
   If Not WinWaitActive($name, 1) Then ContinueLoop
   Example()
WEnd

Есть и другое решение, но там уже нужно будет регистрировать/перехватывать сообщения окна - что еще геморойно и больше кода.
Благодарю
 
Верх