Benutzeringaben automatisieren

fanste

Erfahrenes Mitglied
Hi,
Ich habe mit Java und der Klasse "Robot" ein kleines Hilfsprogramm für ein paar Freunde und mich erstellt, welches uns automatisch ein Spiel startbereit macht. Dieses funktioniert auch ohne Probleme. Da ich jetzt aber nicht von allen verlangen kann, Java runterzuladen, wollte ich dieses programm gerne in C++ umsetzen. Dazu müsste ich allerdings die Maus und die Tastatur durch das Programm steuern.

Der grobe Ablauf sieht so aus:
- Spiel starten
- Startknopf finden und drücken
- warten bis Startscreen zu sehen ist
- Daten eingeben
- Wenn Spiel ganz geladen, dann Startprogramm beenden
- Bei einem Rausschmiss nochmal von vorne

Ich brauch also nur Funktionen mit denen ich die Maus an Punkt X/Y bewegen, ich vom Bildschrim die Farben an Punkt X/Y auslesen und die tastatureingaben automatisieren kann.

In Java alles kein Problem nur in C++ sieht die Sache ja etwas anders aus ;)

Ich hoffe ihr könnt mir da weiterhelfen. Das es geht, weiß ich, aber ich habe über Google nichts passendes gefunden, bzw keine passenden Suchbegriffe gefunden.

PS: NEIN, es wird kein Programm, mit dem ich igrendwelche illegalen Aktivitäten vor habe. Nur eine kleine Starthilfe für ein Spiel, bei dem man beim manuellen Starten sonst mehrere Minuten unnötig am PC festsitzt ;)
 
Stimmt ;)

Laufen sollte es, wenn möglich, auf allen Windowsversionen. Aber soweit ich weiß, hat keiner unter Win2k.
Mit Framework meinst du da die Herkunft oder das Zielframework? Wenn wir schon dabei sind, kannst du mir auch gleich sagen, was das genau ist (bin mir da nicht so sicher ^^)

EDIT:
Hab mir das nochmal durchgelesen: So auf den ersten Blick kann ich mein Java "Programm" zu keinen dieser Framework-Typen zuordnen
 
Zuletzt bearbeitet:
Es soll ein ganz normales Win32 Programm mit grafischer Oberfläche werden. Wie die ganze Struktur usw in etwa aussieht, weiß ich schon, mir fehlen dann nur noch diese Funktionen und evt die ansätze für die Oberfläche ;) Da bin ich gerade dabei mich einzuarbeiten (Hab bisher nur auf Konsolenbasis gearbeitet)
 
HILFE! Das dauert wieder, bis ich mich da reingearbeitet habe. Ich hasse englische Texte ^^ Die sind immer so schwer zu verstehen ^^

Werd mal versuchen da etwas zustande zu bekommen. Aber es ist sowie ersteinmal wichtiger die Oberfläche auf die Beine gestellt zu bekommen ;)

Aber danke schonmal. Mal schauen, was ich damit erreiche
 
Ich hoffe, folgende Stichpunkte helfen dir weiter:

  • Um ein Programm starten, kannst du die Funktion ShellExecute() verwenden.
  • Mit GetDesktopWindow() bekommst du ein Fenster-Handle für den gesamten Desktop.
  • Mit GetDC() holst du dir einen Device-Kontext für das Desktopfenster. Den benötigst du für GetPixel. Nach getaner Arbeit muss der Device-Kontext wieder mit ReleaseDC() freigegeben werden.
  • Tastatur/Mauseigaben dann mit SendInput(), wie Matthias Reitinger schon geschrieben hat.

Gruß
MCoder
 
Wow, danke für die ganzen Infos.
Eine Frage zu GetDC():
Das Spiel startet erst mit einem "Programmstarter", bei dem man auf 'Start' drücken muss und das eigentliche Spiel dann im Vollbildmodus. Muss ich da dann die gleiche Funktion benutzen, oder gibt es da wiederrum etwas spezielles?
 
Zurück