 |
Funkcja WinAPI pozwalająca wielokrotnie wpisywać kody w grach
|

|
kody,do,gry,grach,wpisać,wpisywanie,kodów
Całkiem niedawno tworzyłem program, który miał mi pomóc we wpisywaniu kodu do gry SimCity 4. Sztuka polegała na tym, aby zasymulować naciśnięcie przez użytkownika klawiszy Ctrl + X, wklejenie ze schowka(kombinacja CTRL + V)(aby było prościej) kodu "weaknesspays", oraz zatwierdzenie klawiszem "ENTER". Następnie cała sprawa zostaje powtórzona dowolną liczbę razy. Taki program może przydać nam się, gdy kod w grze trzeba wpisywać dziesiątki, lub tysiące (sic!) razy.
Poniżej zamieszczam kod (w C++, napisany dla C++ Builder'a), aby przedstawić sprawę praktycznie. Po więcej informacji sięgnij do dokumentacji WinAPI. Ponieważ podstawowa funkcja pochodzi z biblioteki Windows'a, program można przełożyć bez problemu na prawie dowolny język programowania.
 |
|
 |
//zmienna pol bedzie sluzyc nam jako licznik ilosci powtorzen
int pol=0;
//aby calosc powtarzala sie co jakis czas, uzyjemy komponentu TTimer wlasciwos Interval tego komponentu ustawilem na 50 (50/1000 sekundy), ponieważ kod trzeba bylo wpisac duzo razy, w mozliwie najkrotrzym czasie
//mniejszy interwal niz 50, moglby spowodowac, iz aplikacja nie zdazala by z obsluga komunikatow o nacisnieciu klawiszy
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//zwiekszenie licznika pol o 1
pol++;
//jezeli licznik powtorzen przekroczy 5000, konczy program
if(pol>5000)Application->Terminate();
int op;
//wysyla komunikat informujacy o wcisnieciu klawisza (lewy) CTRL
keybd_event(VK_LCONTROL,0,0,0);
//funkcja dosc zaimproizowana, zamienia znak X na jego odpowiednik w wirtualnych klawiszach
op = TextToShortCut("X");
//wysyla komunikat informujacy o wcisnieciu klawisza X
keybd_event(op,0,0,0);
//wysyla komunikat informujacy o zwolnieniu klawisza X
keybd_event(op,0,KEYEVENTF_KEYUP,0);
//wysyla komunikat informujacy o zwolnieniu klawisza (lewy) CTRL
keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
//tutaj i dalej analogicznie jak wczesniej
keybd_event(VK_LCONTROL,0,0,0);
op = TextToShortCut("V");
keybd_event(op,0,0,0);
keybd_event(op,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
//VK_RETURN oznacza w kodzie wirtualnych klawiszy klawisz ENTER
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
}
//---------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//tutaj znajduje sie funkcja, ktora wykona sie po nacisnieciu przycisku [Start]. Usypia ona program na 15 sekund, a dopiero
//po tym czasie sprawia aby timer zaczal "tykac"
Sleep(15000);
Timer1->Enabled = true;
}
//---------------------------------------------------------
|
 |
|
|
|
kody,do,gry,grach,wpisać,wpisywanie,kodów
|
 |
|