Что нового

Зацикливание появление разных окон в скрипте с выполнением команды

nibble74

Новичок
Сообщения
4
Репутация
0
Всем привет ! Ребята помогите в написании скрипта такого типа

Код:
Example()
Func Example()
WinWait("WinInfo")
Send("^!{h}")
SoundPlay(@WindowsDir & "\media\Windows Exclamation.wav")
WinWaitClose("WinInfo")
Send("^!{h}")
SoundPlay(@WindowsDir & "\media\Windows Notify.wav")
Return Example()


Вообщем суть такова, запустил одну игру, сработало Ctrl+Alt+h, закрыл игру и снова сработало Ctrl+Alt+h.
Запустил другую игру и снова сработали горячие клавиши, так по кругу. Не могу зациклить в скрипте проверку запущенного окна той или иной игры.

Не хотелось бы писать этот код для каждой конкретной игры, так как в автозагрузке придётся держать много запущенных процессов AutoIt-а.

Как уместить всё в одном файле, чтобы несколько 'отслеживаемых окон' (или 'процессов.ехе') были зациклены и скрипт всегда сидел в трее.

Вот тут у меня загвоздка, не знаю как написать такой скрипт в одном файле.

Пожалуйста, нужна помощь.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: [Автоматизация] Помогите в написании скрипта... AutoIt 3.3.14.0

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Автоматизация] Помогите в написании скрипта... AutoIt 3.3.14.0" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Re: [Автоматизация] Помогите в написании скрипта... AutoIt 3.3.14.0

Можно попробовать так
для примера
Код:
;Запуск нужной программы в полноэкранном режиме.

Global $all_windows

Sleep(5000) ;запуск через 5 сек

While 1
	$all_windows = WinList()

	For $i = 1 to $all_windows[0][0]

		If WinActive($all_windows[$i][1]) Then
			$iState = WinGetState("[ACTIVE]", "")

			If BitAND($iState, 32) Then
				Send("^!{h}")

				Do
					Sleep(100)
				Until WinWaitClose($all_windows[$i][1])
				Send("^!{h}")
			EndIf
		EndIf
	Next
WEnd
 
Автор
N

nibble74

Новичок
Сообщения
4
Репутация
0
Огромное спасибо за отклик.

Только не могу размножить это на несколько имён.

Долго пыхтел со справкой к AutoIt, но так и не разобрался,
а на одном приложении работает на ура.

Также при запуске скрипта, повышается нагрузка на процессор, заполняется до 50% на обоих ядрах.



Добавлено:
Сообщение автоматически объединено:

Я так понимаю это должно выглядеть так ?

Код:
If WinActive($all_windows[$i][1]) Then
            $iState = WinGetState("name win", "")
            $iState2 = WinGetState("name win", "")

            If BitAND($iState, 8) Then
                Send("^!{h}")
                SoundPlay(@WindowsDir & "\media\Windows Exclamation.wav")
                Do
                    Sleep(100)
                Until WinWaitClose($all_windows[$i][1])
                Send("^!{h}")
                SoundPlay(@WindowsDir & "\media\Windows Notify.wav")
            EndIf
            If BitAND($iState2, 8) Then
                Send("^!{h}")
                Do
                    Sleep(100)
                Until WinWaitClose($all_windows[$i][1])
                Send("^!{h}")
            EndIf
        EndIf
 
Верх