Fremden Prozess Tastendruck simulieren
-
Sehr geehrte Herrschaften,
ich bin mittlerweile von Windows auf Linux (Ubuntu 7.10) umgestiegen und bin außerdem hobby Warcraft 3 Spieler.Das Tool Wine ermöglicht mir bei Linux das Spiel "Warcraft 3" einwandfrei zu starten, jedoch fehlt mir eine Sache um voll und ganz glücklich mit Linux und Wine zu sein. Ich muss Warcraft simulieren ich würde permanent die ALT-Taste drücken (hat den Effekt, dass mir im Spiel permanent die Healthpoints angezeigt werden). Verschiedene Tools, die bei Windows funktionieren, haben bei mir in Wine leider nicht funktioniert, daher möchte ich meine Programmierkenntnisse dahin nutzen mir ein simples Programm zu schreiben, dass diese Funktion in Wine simuliert. Mir fehlt jedoch das Wissen, wie ich so etwas überhaupt umsetzen kann.
Es muss hier in WinAPI programmiert werden, da Wine soweit ich weiß nicht viel mehr versteht.
Ich hoffe, mir kann da jemand weiterhelfen.
MFG
phiberK
-
ich tippe mal, das einem da auch nicht viel anderes übrig bleibt als den entsprechneden Part von DirectX zu hooken ... und das ist bekanntlich nicht so fix mal eben gemacht ... kann dir da nicht weiterhelfen, dir nur sagen, dass WC3 WindowsMessages ignoriert und es deswegen nicht mit dem einfachen SendInput etc. getan ist. Wollte nämlich auch sowas in der richtung machen und hab immer wieder das Gleiche in den FOren gelesen
...
-
ich kenn mich jetzt überhaupt nicht mit D3D usw. aus, aber man kann WC3 mit dem Parameter -opengl in OpenGL starten, vllt hilft uns ja opengl mehr ;)..
ich meine, es gibt ja schon verschiedene Programme, die das mit der gedrückten alt-taste hinkriegen.. ich bezweifle, dass das so schwer ist
mfg
phiberK
-
Ich weiß zwar nicht ob das Tool evtl. auch unter Linux funktioniert aber such doch mal nach Warcraft III HP Viewer. Evtl. klappts ja.
Gruß Tobi.
-
Hallo, ich muss mich korrigieren. Ich habs eben mal ausprobiert... Bei WC3 funktioniert die Simulation einer gedrückten Taste durch SendInput doch. Wahrscheinlich kommt es bei einem Strategiespiel nicht auf ein superschnelles Reagieren auf einen Tastendruck an und Blizzard macht das ganze nicht per DirectInput. Bei CS z.Bsp. klappt das Simulieren eines Tastendrucks nicht so einfach.
Also im Groben brauchst du:
FindWindow() um WC3 zu finden
SendInput() um den Tastendruck zu simulieren (VKC: VK_MENU für ALT-Taste)dann musst du nur noch gucken, dass dein Programm keine anderen Einschränkungen schafft, die eventuell durch das permanente ALT entstehen.
MfG dust
-
also ich würde da ganz anders rangehen^^
er benutzt ja Linux^^ und Wine.
wäre nicht das logischste eine Linuxanwendung zu schreiben,
welche Wine vorgaukelt, es wäre eine Taste gedrückt,anstatt eine Win-Anwendung zu schreiben, die auch unter Wine ausgeführt wird -.-
und dann WC3 einen Tastendruck vorzugaukeln.
-
ja das ist mir schon klar, dass ich das theoretisch in linux programmieren könnte, aber wie bringt man von linux heraus wiederrum wine bei, dass ich die taste permanent drücke, da wine ja eine windows umgebung emuliert und auch nur auf aktionen in dieser reagiert..?
-
Schreib mal einen Loader der WC3 lädt/startet und prüfe, ob man mit den zurückgelieferten Handles etwas anfangen kann.
-
Hallo, falls du NICHT vor hast, das Tool in Ladder Games zu benutzen, dann kann ich dir mein heute fertig gewordenes HP TOOL mal schicken. Es benutzt eine komplett andere Technik zum Anzeigen der Balken und KÖNNTE deswegen bei dir funktionieren.
Wenn kein Interesse besteht, das Thema einfach wieder nach unten sinken lassen^^.
-
Bei solchen Game Frickeleien geht Probieren über Studieren. Als ich mir zu meinen UO Zeiten ein kleines Instant Trank Saufen Cheat Proggy für PVP gebaut hab, ging des auch ganz nice mit SendInput und des war 100 mal leichter logischerweise als sich in den Netzwerktraffic einzuklinken.