Что нового

[Окна, Диалоги] Запустить EXE, закрыть окно без названия, нажать кнопку

Frostnord

Новичок
Сообщения
13
Репутация
1
Версия AutoIt:3.3.6.1

Описание: Есть бот который не имеет названия окна и при его запуске появляется сообщение о том что версия устарела оно также без названия.
Нужно : запуск Exe файла ,закрытие появляющегося окна без имени клавишей Enter , через 3-7 сек загружается сам бот в нем нужно нажать Run bot

Примечания: Сам немного поковырял закрывает 1 окно но в нехочет запускать 2е
Код:
While 1
Run("notepad.exe")
Sleep(500)
$handle = WinGetHandle("1", "")  
Sleep(500)
Send('{ENTER}')
Sleep(2000)
$handle = WinGetHandle("Untitled", "")
Sleep(6000)
ControlClick('Untitled','Run Bot','buttonRun')
Sleep(60 * 60000)
WEnd
Sleep(122 * 60000)
Func ex()
    Exit
EndFunc
1е окно
http://img7.imageshack.us/i/51279195.png/

http://img818.imageshack.us/i/38952855.png/
окно Windows Info для кнопки Run bot
http://img4.imageshack.us/i/91653012.png/
p/s задаю вопрос не в теме про ботов потому что задача не в настройке бота а в его запуске.
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Re: [Окна, Диалоги] Окна не имеющие названия

Frostnord, у окна есть класс. Оперируй им.
WinExists ("[CLASS:My Class]", "")
 

lexaSF

Новичок
Сообщения
182
Репутация
3
Re: [Окна, Диалоги] Окна не имеющие названия

примерно так
Код:
$ExeFile = @ScriptDir & '\Название_бота.exe'
Run($ExeFile, @ScriptDir)
WinWait('','текст окна (легко находиться с помощью того же autoit window info)')
ControlSend('','тот же текст окна', 'Class кнопки','{ENTER}')
WinWait('','текст окна бота (легко находиться с помощью того же autoit window info)')
ControlSend('','тот же текст окна', 'Class кнопки RuN Bot','{ENTER}')

скрипт должен быть в папке с ботом.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Frostnord
{CodeWarn.SModer}
Исправьте пожалуйста.
 
Автор
F

Frostnord

Новичок
Сообщения
13
Репутация
1
Спасибо работает .Осталось сделать чтобы скрипт перезапускался при исчезновении процесса бота .

Upd. Сам решил спс.
Может кому пригодится
Код:
While 1
If Not ProcessExists("notepad.exe") Then
Run("notepad.exe")
WinWaitActive("", "You're not using last GPBot version")
ControlSend("","You're not using last GPBot version", '[CLASS:Button; INSTANCE:1]','{ENTER}')
WinWaitActive("", "V0.9.10.4 Public")
Sleep(2000)
ControlClick("","Run Bot","[NAME:buttonRun]")

Sleep(60 * 60005)
Beep (500,200)
EndIf
WEnd
 
Автор
F

Frostnord

Новичок
Сообщения
13
Репутация
1
Появилась проблема - из за того что скрипт цикличен он проверяет есть ли процесс в процессах (сори за каламбур) слишком много раз в секунду что вызывает зависание бота ,чего не наблюдалось до использования скрипта ,но поставить Sleep нельзя потому как нужно чтоб скрипт перезапускал бота через секунду после отключения.
Код:
While 1
If Not ProcessExists("notepad.exe") Then
Beep (500,200)
Run("notepad.exe")
Sleep(3000)
WinWait("", "You're not using last GPBot version")
ControlSend("","You're not using last GPBot version", '[CLASS:Button; INSTANCE:1]','{ENTER}')
WinWait("", "V0.9.10.4 Public")
ControlClick("","Run Bot","[NAME:buttonRun]")

Sleep(60000)
EndIf
WEnd
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Необходим Sleep хотя бы на 50-100 мсек. Это меньше 1 секунды в 10 раз. Видимое уменьшения скорости выполнения скрипта врядтли будет заметно, а вот умещение нагрузки на CPU будет гораздо меньше.
 

lexaSF

Новичок
Сообщения
182
Репутация
3
Попробуй дописать:
Код:
While 1
If Not ProcessExists("notepad.exe") Then
Run("notepad.exe")
WinWaitActive("", "You're not using last GPBot version")
ControlSend("","You're not using last GPBot version", '[CLASS:Button; INSTANCE:1]','{ENTER}')
WinWaitActive("", "V0.9.10.4 Public")
Sleep(2000)
ControlClick("","Run Bot","[NAME:buttonRun]")

Sleep(60 * 60005)
Beep (500,200)
Else
Sleep(1000)
EndIf
WEnd
 
Верх