Jak vytvořit vlastní simulační program

Rozhodl jsem se uveřejnit některé části zdrojáku Virtuálního uživatele. Rozhodně tu nenajdete kompletní kód, ale jen jakýsi návod, jak si vytvořit podobný program.
Ještě připomínám, že je napsán v Delphi 5.
Tuto unitu budete asi potřebovat zařadit do uses.

{Asi budete potrebovat toto pridat}
uses  ShellApi


Nejprve simulace surfování. To je asi nejjednodužší. Zavoláte uvedenou proceduru a jako parametr dáte URL adresu. Např. BrosweURL('http://www.seznam.cz/');


{----Simulace surfovani----}
procedure brosweurl(urltobroswe:string);
begin
  ShellExecute(GetDesktopWindow(), 'open', PChar(urltobroswe), nil, nil,SW_SHOWNORMAL);
end;

Simulace pohybu myši. Vypadá to složitě, ale také na tom nic není. Procedure getcursorpos(pos) zapiše do proměnné pos pozici myši a pomocí setcursorpos(x,y) můžete nastavit kurzor na libovolnou pozici. Příklad při zavolání posune myš náhodným směrem o jeden bod (aby bylo něco vydět, je dobré buď volat vícekrát, nebo změnit px:=random(3)-1 na např. px:=random(6)-3, takže se bude posouvat o 3 body, ...


{---Simulace pohybu mysi ---}
procedure zmenpozici;
var pos:tpoint;px,py:integer;
begin
    {Zisti pozici mysi a zapise ji do pos}
 getcursorpos(pos);

    {Generuje nahodny smer pohybu}
 px:=random(3)-1;
 py:=random(3)-1;
    {Zmeni pozici v pos.x a pos.y o 1 v nahodnem smeru. Kontroluje,
     aby mys nebyla nastavena mimo obrazovku}
 if pos.x<=0 then px- px;
 if pos.y<=0 then py:=- py;

 if pos.x>=screen.Width-5 then px:=- px;
 if pos.y>=screen.Height-5 then py:=- py;

 pos.x:=pos.x+px;pos.y:=pos.y+py;

    {Nastavi kurzor mysi na novou pozici}
 setcursorpos(pos.x,pos.y);
end;


Simulace kliknutí myši. Při zavolání klikne levým, provým, nebo prostředním tlačítkem (case).

{---Simulace kliknuti mysi ---}
procedure kliknimysi;
begin
 case random(3) of
  0:begin {Leve tlacitko}
     mouse_event(MOUSEEVENTF_LEFTDOWN,pos.x,pos.y,0,GetMessageExtraInfo);
     mouse_event(MOUSEEVENTF_LEFTUP,pos.x,pos.y,0,GetMessageExtraInfo);
  end;
  1:begin {Prave tlacitko}
     mouse_event(MOUSEEVENTF_RIGHTDOWN,pos.x,pos.y,0,GetMessageExtraInfo);
     mouse_event(MOUSEEVENTF_RIGHTUP,pos.x,pos.y,0,GetMessageExtraInfo);
  end;
  2:begin {Prostredni tlacitko}
     mouse_event(MOUSEEVENTF_MIDDLEDOWN,pos.x,pos.y,0,GetMessageExtraInfo);
     mouse_event(MOUSEEVENTF_MIDDLEUP,pos.x,pos.y,0,GetMessageExtraInfo);
  end;
 end;
end;

Zmáčkne náhodně jednu z kurzorových kláves (doprava, doleva, nahoru, dolu).

{---Simulace klavesnice ---}
procedure klavesnice;
const k_sipky:array[0..3] of byte=(vk_up,vk_down,vk_left,vk_right);
var keyk:integer;
begin
    {Vybere nahodnou kurzorovou klavesu}
 keyk:=k_sipky[random(3)];

    {Stiskne ji}
 keybd_event(keyk,0,0,GetMessageExtraInfo);
 keybd_event(keyk,0,KEYEVENTF_KEYUP,GetMessageExtraInfo);
end;

Změní titulek okna a aplikace. Dobré na anti-detekci. Podfunkce randomstring generuje náhodný řetězec náhodné délky.


{---Zmena titulku ---}
procedure zmentitulek;

 function randomstring:string;
 var i:integer;s:string;
 begin  {Generuje nahodny retezec nahodne delky}
  s:=''; for i:=1 to random(10)+3 do
  begin
   s:=s+chr(random(ord('z')-ord('A'))+ord('A'));
    if random(5)=3 then s:=s+' ';
  end;
  randomstring:=s;
 end;

begin
    {Zmeni nazev okna}
 Form1.caption:=randomstring;
    {Zmeni nazev aplikace v dolni liste}
 Application.title:=Form1.caption;
end;

Tak to je tak vše. Po drobných úpravách můžete vytvořit celkem solidní simulační program.

Poznámka : Pro grafické zvýraznění zdrojových kódů byl použit program Pas2Htm, který rovněž najdete na těchto stránkách.


Kontakt na autora:
Pavel Holeček - 7software

Weby:
7software - programy
E-mail:
7software@seznam.cz

(C) Pavel Holeček - 7software