Hallo !
Ich arbeite an einem ähnlichen Projekt und habe dazu auch ein paar Fragen!
Zuerst mal was meine Anwendung (Delphi 2006) überhaupt machen soll: ich spiele ein kostenloses Onlinerollenspiel (Silkroad). Die Server sind alle hoffnungslos überfüllt, da es wie gesagt absolut kostenfrei ist. Das Einloggen ist eine Qual... 10-30 Versuche sind noch harmlos.
Jetzt meine Idee: ich schreib für meinen Clan eine Delphi Anwendung welche den Client startet und die logindaten eingibt, und zwar solange bis man eingeloggt ist oder das Programm beendet wird.
Ich habe zwar schon bissel Delphi Erfahrung, leider noch nie eine Art "Fernsteuerung" geschrieben.
Meine grösste Hilfe ist der Delphi-Easy Helper mit aktueller
DB.
- mit TExecuteWaitEvent öffne ich die .exe des Spielclients: kein Problem
- mit EnumWondowsProc und FindAWindow kann ich mir das
handle (oder das Fenster) aktiv schalten: mit Notepad getestet kein Problem
Was mich interessiert ist:
- ist es sinnvoll mit einem Timer alle 1000 ms abzufragen ob die gewünschte Anwendung noch läuft?
- Ich weiss nicht wie ich die maus an eine bestimmte Stelle des Desktop positioniere und einen Klick machen kann.
- Wie kann ich Tastaturbefehle an das andere Fenster schicken? Sendkeys? SendInput?
Der update-Client bringt ein kleines Fenster in die Bildschirm Mitte und fängt mit dem update an - ist kein update notwendig kann man direkt den START button betätigen. Diesen gilt es zunächst zu drücken. Dann erst startet der eigentliche Spielclient im Vollbildmodus. Mit einem TAB komm ich in das editfeld, in dem der loginname reingeschrieben werden muss. Ein TAB weiter und man kann das Passwort eingeben.
Jetzt kann man solange den connect button drücken bis man einen "du-wurdest-dissconnected" dialog bestätigen muss und dann wieder auf dem desktop landet. .... .... jetzt müsste meine Delphi Anwendung wieder von vorne beginnen, bis man wirklich eingeloggt ist.
Hab ich mir da zuviel vorgenommen?
Ich suche nach einer relativ einfachen Methode um Tastatur und/oder Mauseingaben weiterzugeben. Die
MSDN Seite mit SendInput half mir auf den ersten Blick nicht. Weiss einer von euch Rat?