![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Зацикливание появление разных окон в скрипте с выполнением команды |
|
Зацикливание появление разных окон в скрипте с выполнением команды
|
Старожил Сообщения: 251 |
Помогите в написании скрипта такого типа :
Вообщем суть такова, запустил одну игру, сработало Ctrl+Alt+h, закрыл игру и снова сработало Ctrl+Alt+h. Запустил другую игру и снова сработали горячие клавиши, так по кругу. Не могу зациклить в скрипте проверку запущенного окна той или иной игры. Не хотелось бы писать этот код для каждой конкретной игры, так как в автозагрузке придётся держать много запущенных процессов AutoIt-а. Как уместить всё в одном файле, чтобы несколько 'отслеживаемых окон' (или 'процессов.ехе') были зациклены и скрипт всегда сидел в трее. Вот тут у меня загвоздка, не знаю как написать такой скрипт в одном файле. Пожалуйста, нужна помощь. |
|
Отправлено: 03:01, 07-08-2015 |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Вот нашёл такой вариант, может поможет кто нибудь откорректировать или объяснить что там к чему.
Global $all_windows[4] = [3, 'title 1', 'title 2', 'title 3'] ; (3) -количество окон, title 1 - Названия окон Global $close_windows[4] = ["", 0, 0, 0] ;массив на количество окон Global $time = 5 While 1 For $i = 1 to $all_windows[0] $Handle = WinGetHandle($all_windows[$i]) $Exist = WinExists($Handle) If $Exist = 1 And $close_windows[$i] = 0 Then $hWnd = WinWait($Handle, '', $time) If Not $hWnd Then MsgBox(64, 'Ошибка', 'В указонный промежуток времени окно найдено небыло.') Send('^!{h}') $close_windows[$i] = 1 ElseIf $Exist = 0 And $close_windows[$i] = 1 Then Send('^!{h}') $close_windows[$i] = 0 EndIf Next WEnd Где там ошибка ? |
Последний раз редактировалось nibble74, 21-09-2015 в 12:21. Причина: Исправил код Отправлено: 08:53, 21-09-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Неужели никто помочь не может ?
|
Отправлено: 16:42, 23-09-2015 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Попробовал запустить скрипт (только чуток переделал) - у меня срабатывает нормально. При запуске, если окна не открыты - не срабатывают горячие клавиши.
Global $all_windows[3] = [ 'title1', 'title 2', 'title 3'] ; title - Названия окон Global $close_windows[3] = [ 0, 0, 0] ;массив на количество окон While 1 For $i = 0 to UBound( $all_windows)-1 $Handle = WinGetHandle($all_windows[$i]) $Exist = WinExists($Handle) If $Exist = 1 And $close_windows[$i] = 0 Then Send('^!{h}') $close_windows[$i] = 1 ElseIf $Exist = 0 And $close_windows[$i] = 1 Then Send('^!{h}') $close_windows[$i] = 0 EndIf Next WEnd |
Последний раз редактировалось ra4o, 24-09-2015 в 22:39. Отправлено: 22:10, 24-09-2015 | #4 |
Старожил Сообщения: 251
|
Профиль | Отправить PM | Цитировать Так я не силён в написании скриптов, поэтому и просил помощи.
К сожалению, при запуске скрипта повышается нагрузка на процессор, до 50% грузится, что не есть гуд. Как так, что может так нагружать ? Подсказали ещё с одним вариантом, но не пойму как вписывать названия окон. Global $all_windows 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}") SoundPlay(@WindowsDir & "\media\Windows Exclamation.wav") Do Sleep(100) Until WinWaitClose($all_windows[$i][1]) Send("^!{h}") SoundPlay(@WindowsDir & "\media\Windows Notify.wav") EndIf EndIf Next WEnd |
|
Отправлено: 00:11, 25-09-2015 | #5 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать В этом варианте функция
возвращает список всех открытых окон и потом в цикле их перебирает, ждёт активации окна и дальше нажимает ваши горячие клавиши и пиликает что-то, затем скрипт зацикливается до тех пор, пока окно не закроется, дальше опять горячие клавиши и пиликание и так по кругу.
|
Отправлено: 10:32, 25-09-2015 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Появление дополнительных (рекламных) окон при переходе по ссылке | Макушкины_ушки | Лечение систем от вредоносных программ | 8 | 16-09-2013 17:08 | |
VBS/WSH/JS - [решено] Как в VBS скрипте указать заголовок окон (MsgBox, InputBox)? | Ragnazar | Скриптовые языки администрирования Windows | 1 | 18-07-2012 21:19 | |
Ожидание разных названий Окон, WinWaitActive | He4To | AutoIt | 7 | 17-09-2010 14:23 | |
Как отследить появление сообщения в разных ОС | Str_ani_ck | AutoIt | 10 | 27-07-2009 18:39 | |
разный результат команды "browstat status" на разных компьютерах | RSM2 | Сетевые технологии | 2 | 25-04-2006 09:44 |
|