mit c# tastendruck simulieren

02/01/2010 12:09 eumel122#1
hallo leute,
hab ein kleines programm geschrieben welches einen tasendruck simuliert.
ich wollte das für metin2 benutzen, umso die fertigkeiten automatisch anzustellen.

alle 100 sekunden drückt es zum beispiel die 1.

das problem is das die fertigkeit jedoch nicht anspringt, wenn ich jedoch den chat anhabe, schreibt er alle 100 sekunden die 1, weiss jmd warum die fertigkeit nicht anspringt?
02/01/2010 12:44 hen!#2
Ganz einfach deshalb, weil du in dem Moment in der Chateingabe bist und du den Tastendruck nur simulierst. Das müsstest du über ASM machen.
02/01/2010 12:57 eumel122#3
das mit der chat eingabe is doch klar, damit wollt ich nur andeuten das das drücken der taste ja funktioniert...aber wenn ich ausserhalb der chat eingabe bin müsste er ja somit ebenfalls die 1 drücken und die fertigkeit aktivieren, was aber eben nicht der fall ist..

und was ist ASM?
02/01/2010 13:04 muhkuhdeluxe#4
Das ist henboy schon klar xD
ASM steht für Assembler.
Mit Assemblern kenn ich mich aber nich zu 100% aus ^^
Jedenfalls ist OllyDBG so ein Assembler-Programm.
02/01/2010 13:34 ^darkwing#5
Mit SendInput sollte es funktionieren.
[Only registered and activated users can see links. Click Here To Register...]
02/01/2010 16:01 hen!#6
Ich meine halt, dass du, wenn das Chatfenster irgendwie offen ist den zeiger auf die Chatzeile hast. So hab ich dich jedenfalls verstanden und wenn das Programm einen Tastendruck simuliert, dann schreibt er halt die "1" in das Chatfenster.

Mit ASM ist wie schon erwähnt Assembler (Urprogrammiersprache) gemeint. Bin da selber kein Profi drinne. Bin grade dabei mein wissen in diesem Bereich weiterzubilden. Jedenfalls könntest du dann halt direkt an Metin den Befehl senden, dass er eine FK ausführen soll über die Operationen vom ASM.

Dazu schreibst du dann halt eine .dll und die injectest du mit Winject z.B.
02/02/2010 02:26 eumel122#7
also weiss jmd warum die fertigkeit nicht anspringt, obwohl ja der tastendruck an das programm gesendet wird?
02/02/2010 11:45 ^darkwing#8
Weil das Spiel vermutlich mit DirectInput arbeitet. DirectInput arbeitet auf einer tiefen Ebene.
Deswegen werden die Keyevents nicht registriert bzw. aufgenommen. Der Chat ist wahrscheinlich ein Textfeld was draufgeklatscht wurde. Dies arbeitet nicht auf so einer tiefen Ebene und deswegen kommen dort die Keyevents an.

Wie schon erwähnt.
Quote:
Originally Posted by ^darkwing View Post
Mit SendInput sollte es funktionieren.
[Only registered and activated users can see links. Click Here To Register...]
02/02/2010 12:57 P-a-i-n#9
probier es doch mit sendmessage
vllt ist das für dich leichter ist fast das selbe wie sendinput
in was willst du das senden z.B msn,ein spiel,chat mit java ?


[Only registered and activated users can see links. Click Here To Register...]
02/02/2010 17:47 eumel122#10
an ein spiel will ichs senden --> metin2

habe mit c# sendkey benutzt, da soll ja eigentlich ein tastendruck senden, also so als ob ich die taste wirklich drücke, scheint aber nich der fall zu sein