В общем. Есть игра. Lineage 2. Делаю программу для удобного управления и запуска нескольких окон.
Для удобства хотел окно игры со стандартного менять на имя персонажа. Что бы в нескольких окнах было проще ориентироваться. Но проблема в том что название окна меняется с помощью _WinAPI и WinSetTitle до первого переключения окна. Выход нашел в бесконечном цикле который работает пока запущена игра и постоянно меняет title. Проблема всплыла когда начал делать GUI для всего этого. Из за того что нажатие на кнопку вызывает функцию в которой есть бесконечный цикл, гуй перестает реагировать на какие либо нажатия. И начинает работать только после того как я закрою игру. А мне надо бы что бы и цикл бесконечный был для каждого запущеного окна отдельный и что бы гуи продолжал работать.
С autoit знаком всего пару дней как. Пока склоняюсь к тому что бы autologin.au3 скомпилировать в exe и при нажатии на кнопку запускать этот скомпилированный скрипт передавая ему парметрами логин, пароль и имя окна.
Выглядит как костыль и хотел по интересоваться у опытных людей, какие еще есть варианты решения такой задачи.
Основное окно
autologin.au3
Для удобства хотел окно игры со стандартного менять на имя персонажа. Что бы в нескольких окнах было проще ориентироваться. Но проблема в том что название окна меняется с помощью _WinAPI и WinSetTitle до первого переключения окна. Выход нашел в бесконечном цикле который работает пока запущена игра и постоянно меняет title. Проблема всплыла когда начал делать GUI для всего этого. Из за того что нажатие на кнопку вызывает функцию в которой есть бесконечный цикл, гуй перестает реагировать на какие либо нажатия. И начинает работать только после того как я закрою игру. А мне надо бы что бы и цикл бесконечный был для каждого запущеного окна отдельный и что бы гуи продолжал работать.
С autoit знаком всего пару дней как. Пока склоняюсь к тому что бы autologin.au3 скомпилировать в exe и при нажатии на кнопку запускать этот скомпилированный скрипт передавая ему парметрами логин, пароль и имя окна.
Выглядит как костыль и хотел по интересоваться у опытных людей, какие еще есть варианты решения такой задачи.
Основное окно
Код:
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <autologin.au3>
Local $hGUI = GUICreate("L2Windows", 150, 185)
Local $character1 = GUICtrlCreateButton("Nickname1", 10, 20, 130)
Local $character2 = GUICtrlCreateButton("Nickname2", 10, 50, 130)
Local $character3 = GUICtrlCreateButton("Nickname3", 10, 80, 130)
Local $character4 = GUICtrlCreateButton("Nickname4", 10, 110, 130)
Local $character5 = GUICtrlCreateButton("Nickname5", 10, 140, 130)
GUISetState(@SW_SHOW, $hGUI)
Local $iMsg = 0
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $character1
Login("login1", "pass1", "Nickname1")
Case $character2
Login("login2", "pass2", "Nickname2")
Case $character3
Login("login3", "pass3", "Nickname3")
Case $character4
Login("login4", "pass4", "Nickname4")
Case $character5
Login("login5", "pass5", "Nickname5")
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete($hGUI)
autologin.au3
Код:
Func Login($login, $pass, $name)
Run("C:\Games\Lineage 2\system\l2.exe")
WinWaitActive("Lineage 2")
Sleep(2000)
Send($login)
Send("{TAB}")
Send($pass)
Sleep(1000)
Send("{ENTER}")
Sleep(2000)
Send("{TAB}")
Sleep(1000)
Send("{ENTER}")
Sleep(500)
Send("{ENTER}")
Sleep(500)
Send("{ENTER}")
Sleep(500)
Send("{ENTER}")
$hWnd = WinGetHandle("Lineage 2")
While (WinGetState($hWnd) <> 0)
WinSetTitle ($hWnd, "", $name)
Sleep(1)
WEnd
EndFunc