Guest User

Untitled

a guest
Mar 6th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.99 KB | None | 0 0
  1. function TForm1.LaunchGame( const path, account, password: string): integer;
  2. const
  3.   WAIT_LOAD = 300;  // 0.1 sec (300 = 30 sec)
  4.   WAIT_BEFORE_LOGIN = 1000; // ms
  5.   WAIT_BEFORE_SERVER_SELECT = 2000; // ms
  6.   KEYPRESS_INTERVAL = 10; // ms
  7.   KEYPRESS_TIMEOUT = 100; //ms
  8. var
  9.   SI:STARTUPINFO;
  10.   PI:PROCESS_INFORMATION;
  11.   l2wndProcessId: DWORD;
  12.   l2wnd: DWORD;
  13.   i: integer;
  14. begin
  15.   ZeroMemory(@SI,sizeof(SI));
  16.   SI.cb:=SizeOf(SI);
  17.   // запуск игры
  18.   if not CreateProcess( nil, PChar(path), nil, nil, False, 0, nil, nil, SI, PI) then begin
  19.     ShowMessage('Can not launch game');
  20.     Result:= -1;
  21.     Exit;
  22.   end;
  23.  
  24.   for i:= 0 to WAIT_LOAD do begin
  25.     l2wnd:= FindWindow('l2UnrealWWindowsViewportWindow', nil);
  26.     GetWindowThreadProcessId(l2wnd, l2wndProcessId);
  27.     if (l2wnd<>0) AND (l2wndProcessId = PI.dwProcessId) then
  28.     begin
  29.        wndAdd(l2wnd);
  30.        Break;
  31.     end;
  32.     Sleep(100);
  33.   end;
  34.  
  35.   if l2wnd = 0 then begin
  36.     ShowMessage('Game console not found');
  37.     Result:= -2;
  38.     CloseHandle( PI.hProcess);
  39.     CloseHandle( PI.hThread);
  40.     Exit;
  41.   end;
  42.  
  43.   Sleep(WAIT_BEFORE_LOGIN);
  44.  
  45.   // Вводим аккаунт
  46.   for i:= 1 to Length(account) do begin
  47.     PostMessage(l2wnd, WM_CHAR, ord(account[i]), 0);
  48.     Sleep(KEYPRESS_INTERVAL);
  49.   end;
  50.  
  51.   // Жмем Tab
  52.   PostMessage(l2wnd, WM_KEYDOWN, $09, 0);
  53.   Sleep(KEYPRESS_INTERVAL);
  54.  
  55.   // Вводим пасс
  56.   for i:= 1 to Length(password) do begin
  57.     PostMessage(l2wnd, WM_CHAR, ord(password[i]), 0);
  58.     Sleep(KEYPRESS_INTERVAL);
  59.   end;
  60.  
  61.   // Жмем Enter
  62.   PostMessage(l2wnd, WM_KEYDOWN, $0D, 0);
  63.   Sleep(KEYPRESS_TIMEOUT);
  64.   PostMessage(l2wnd, WM_KEYUP, $0D, 0);
  65.  
  66.   Sleep(WAIT_BEFORE_SERVER_SELECT);
  67.  
  68.   // Жмем Enter
  69.   PostMessage( l2wnd, WM_KEYDOWN, $0D, 0);
  70.   Sleep(KEYPRESS_TIMEOUT);
  71.   PostMessage( l2wnd, WM_KEYUP, $0D, 0);
  72.  
  73. {  Ждать завершения
  74.   WaitForSingleObject( PI.hProcess, INFINITE);
  75.   CloseHandle( PI.hProcess);
  76.   CloseHandle( PI.hThread);
  77. }
  78. end;
Add Comment
Please, Sign In to add comment