Tastendruck simulieren (war: Brauche Hilfe von erfahrenen Leuten.)
-
Nun ich habe erst seit kurzem Programmier Unterricht in der Schule.
Najut nun wollte ich mal ein eigenes Prog schreiben was ich auch gebraucehn könnte. Ich tue euch erstmal den Sinn erklären ^^:Also...
Es soll ein Programm sein, welches zb 20 mal einen Tastendrück simuliert.
Mal angenommen für die zahl 0. Diesen druck soll er aber nur alle 20 sekunden ausführen.
Wäre cool wenn ihr mir mal ne musterlösung zeigen könntet wäre voll nett.
das zweite Prob wäre das dieser tastendruck in einem Computerspiel ausgeführt werden soll. Naja hab mir überlegt wenn der ja wirklich diesen Tastendrück simuliert dann müsste er den doch in jedem Maximiertem Programm ausführen oder?
ODer muss ich da extra den Pfadnamen(.exe) angeben in der er das ausführt?Bitte um antwort.
MFG Peanut
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Das mit deem Tastendruck sollte kein Problen sein. Steh in der FAQ wie das gemacht wird. Dazu noch ne Timer-Komponente und schon passt das mit den 20 Sekunden.
Das in einem Spiel zu machen sollte nicht so einfach gehen. Besser du machst erst mal was anderes, wenn du noob bist.
-
Zum Tastendruck: siehe FAQ unter "Tasten".
Deine zweite Frage ist unverständlich. Das liegt vermutlich daran, dass dir das Grundlagenwissen fehlt, deshalb solltest du ggf. den Ratschlag von MORL befolgen.
-
Hi!
Sowas hab ich auch mal gemacht. Zwar nicht alle paar Sekunden, aber per Knopfdruck tippt das Programm einen Cheat ein... Siehe hier (Cheater v1.2). Könnte dir ja Ausschnitte des Quellcodes zusenden.
MfG Windoof
-
"Könnte dir ja Ausschnitte des Quellcodes zusenden."
Mir bitte auch!!!!! Würde mich echt tierisch weiter bringen!!E-Mail: ndr@chue.li Danke!!!!!!
-
Ich würde mich freuen @Windoof wenn du mir den zuschicken könntest.
Da wesentlichste was ich rbauche ist:Der ganze Kram mit dem Tasten druck
und wenn du es kannst nen beispiel Quelltext mit dieser Zeitverzögerung
wäre voll genial.
Kannste ja heir rein posten....
MFG Peanut
-
U N D, was glaubt ihr in den Codeschnippel zu finden?
Kann man das nicht schneller haben wenn man den FAQ-Beitrag
in ein OnTimer Ereignis schreibt (wohl er kopiert) und ihn
angleicht (das VK_Tasten schema steht in der Hilfe).
Die nächste Frage wird wohl sein: Wie erfahre ich den Klassenamen
eines Fensters. Statt des Klassennamen könnt ihr auch den
Fensternamen angeben e.g. FindWindow(NULL,"Fenstername");Fazit: warum sich durch angepasten Code wühlen, wenn die Vorgabe
(FAQ) einfach importierbar ist.
-
Headerdatei:
class TForm1:public TForm { //... private: void __fastcall DownKey(WORD &Key); void __fastcall UpKey(WORD &Key); void __fastcall PressKey(WORD &Key); void __fastcall TypeWord(String &Word); };
Unit:
void __fastcall TForm1::DownKey(WORD &Key) { keybd_event(Key,0,0,0); } void __fastcall TForm1::UpKey(WORD &Key) { keybd_event(Key,0,KEYEVENTF_KEYUP,0); } void __fastcall TForm1::PressKey(WORD &Key) { DownKey(Key); UpKey(Key); } void __fastcall TForm2::TypeWord(String &Word) { for (int i=1;i<=Word.Length();++i) { PressKey(Word[i]); // Bei langsameren PCs sollte man noch eine kurze Pause lassen: // Sleep(10); } }
Das geht leider nicht mit Sonderzeichen.
MfG Windoof
EDIT: Man kann den Code hier natürlich auch kürzen, also so hier:
Header:
class TForm1:public TForm { //... private: void __fastcall TypeWord(String &Word); };
Unit:
void __fastcall TypeWord(String &Word) { for (int i=1;i<=Word.Length();++i) { keybd_event(Word[i],0,0,0); keybd_event(Word[i],0,KEYEVENTF_KEYUP,0); // Sleep(10); } }
Aber beim Cheater ist der Quelltext nicht ganz so kurz und ziemlich unübersichtlich, wegen der Größe. Da machen sich solche Extrafunktionen ganz gut, denn wenn man mit soetwas arbeitet, mach man den Quelltext übersichtlich.
-
Achja, und Systemweit abfragen, ob eine Taste gerade gedrückt ist, kann man so (Macht sich besser als das mit der DLL-Datei hier):Man nehme eine TTimer-Komponente, stelle Interval auf 10 und schreibe das hier in den OnTimer des Timers:
for (int i=0;i<slKeyList->Count;++i) if (::GetKeyState(StrToInt(slKeyList->Strings[i]))<0) TypeWord(slCheatList->Strings[i]);
slKeyList ist eine Liste, in der die WORD-Werte der Tasten als Integer abgespeichert werden. slCheatList ist die dazugehörige Cheatliste.
EDIT: Datentyp der beiden Listen ist natürlich TStringList.
-
@ Windoof kannste mir hier mal den gewissen Teil einfügen das das Funzt?
Wäre cool komm voll net damit klar.#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#include <dos.h>void main(void)
{
char taste[10];unsigned int eingabe, i;
printf("Bitte geben sie die Hotkey-Taste ein: ");
gets(taste);eingabe=strlen(taste);
for(i=1;i<=20;i++)
{/Tastendrucksimulation
mit der Taste die ich oben eingegeben habe//hier nach soll die
Zeitverzögerung um etwa
20 Sekunden hin. Sprich for schleife
wird erst in 20 sekunden wieder ausgeführt/printf("%s",eingabe);
}getch();
}
-
sorry ist net eingerückt ka warum er das nett gemacht hat.