Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function TForm1.LaunchGame( const path, account, password: string): integer;
- const
- WAIT_LOAD = 300; // 0.1 sec (300 = 30 sec)
- WAIT_BEFORE_LOGIN = 1000; // ms
- WAIT_BEFORE_SERVER_SELECT = 2000; // ms
- KEYPRESS_INTERVAL = 10; // ms
- KEYPRESS_TIMEOUT = 100; //ms
- var
- SI:STARTUPINFO;
- PI:PROCESS_INFORMATION;
- l2wndProcessId: DWORD;
- l2wnd: DWORD;
- i: integer;
- begin
- ZeroMemory(@SI,sizeof(SI));
- SI.cb:=SizeOf(SI);
- // запуск игры
- if not CreateProcess( nil, PChar(path), nil, nil, False, 0, nil, nil, SI, PI) then begin
- ShowMessage('Can not launch game');
- Result:= -1;
- Exit;
- end;
- for i:= 0 to WAIT_LOAD do begin
- l2wnd:= FindWindow('l2UnrealWWindowsViewportWindow', nil);
- GetWindowThreadProcessId(l2wnd, l2wndProcessId);
- if (l2wnd<>0) AND (l2wndProcessId = PI.dwProcessId) then
- begin
- wndAdd(l2wnd);
- Break;
- end;
- Sleep(100);
- end;
- if l2wnd = 0 then begin
- ShowMessage('Game console not found');
- Result:= -2;
- CloseHandle( PI.hProcess);
- CloseHandle( PI.hThread);
- Exit;
- end;
- Sleep(WAIT_BEFORE_LOGIN);
- // Вводим аккаунт
- for i:= 1 to Length(account) do begin
- PostMessage(l2wnd, WM_CHAR, ord(account[i]), 0);
- Sleep(KEYPRESS_INTERVAL);
- end;
- // Жмем Tab
- PostMessage(l2wnd, WM_KEYDOWN, $09, 0);
- Sleep(KEYPRESS_INTERVAL);
- // Вводим пасс
- for i:= 1 to Length(password) do begin
- PostMessage(l2wnd, WM_CHAR, ord(password[i]), 0);
- Sleep(KEYPRESS_INTERVAL);
- end;
- // Жмем Enter
- PostMessage(l2wnd, WM_KEYDOWN, $0D, 0);
- Sleep(KEYPRESS_TIMEOUT);
- PostMessage(l2wnd, WM_KEYUP, $0D, 0);
- Sleep(WAIT_BEFORE_SERVER_SELECT);
- // Жмем Enter
- PostMessage( l2wnd, WM_KEYDOWN, $0D, 0);
- Sleep(KEYPRESS_TIMEOUT);
- PostMessage( l2wnd, WM_KEYUP, $0D, 0);
- { Ждать завершения
- WaitForSingleObject( PI.hProcess, INFINITE);
- CloseHandle( PI.hProcess);
- CloseHandle( PI.hThread);
- }
- end;
Add Comment
Please, Sign In to add comment