Eingabe (Tastatur/Mouse/Joysdtik) abfangen (Listener)



  • Hi

    Ich will ein Programm schreiben was alle Einaben(Keyboard,Mouse..) abfängt
    und speichert, so das man das ganze später wieder aufrufen kann.

    Hintergrund: gebraucht wird das für Forschung im Bereich Spiele. Wenn ein
    solches Prog läuft kann man mit den gespeicherten Infos Spiele "nachspielen"
    (da alle Benutzereingaben vorhanden sind, da gespeichert).

    Die wesentlichsten Probleme aus meiner sicht sind:

    1. An welcher Stelle klinkt ich mich ins Win ein bzw. wie erstelle ich ein
    "autonomes" Programm welches die Eingaben für einen bestimmten Prozess
    (Task) abfängt ? Probleme seh ich hier vor allem im Thread handling.

    2. Welche Programmiersprache ? (VB,C/C++,Java) vorteile/nachteile

    Ich hoff mal das ich hier im WinApi bereich richtig bin. habe in VB bereits
    sehr viel mit API gemacht und bin der meinung das das grundsätzlich funzen
    sollte. Mein größtes Prob ist aber wie gesagt, wie ich das programm in den
    "hintergrund" bringe bzw. wie ich mit einem prog das OS "überwachen" kann.
    Neben synchronisations probs werd ich wohl auch mit zugriffsrechten probs
    haben.

    Vorerst such ich nach ansätzen und einstiegsmöglichkeiten. Sorry wenn das
    ganze recht relativ formuliert ist. bin noch kein Win crack.

    achja eine konkrete frage kann ich schon stellen:

    Progs brauchen ja meist recht lange eh sie hochgefahren sind. dh. es gibt eine
    zeitliche differenz zwischen aktivieren(starten) und der entgegennahme von
    eingaben (mouse,keyboard). gibts über die API ne möglichkeit rauszufinden
    wenn ein prog fertig hochgeladen hat ?

    Danke im Vorraus.

    pain



  • Also solche Nachrichten kannst du prinzipiell abfangen, indem du einen systemweiten Hook (SetWindowsHookEx) einrichtest - Beispiel-Code gibts afaik z.B. in den FAQ

    Bei Spielen wird es hier aber schwierig - insbesondere mit dem Abspielen der aufgezeichneten Nachrichten - da diese oft direkt auf die Hardware (z.B. per DirectInput o.ä.) zugreifen. Da geht das dann nicht mehr so ohne weiteres 😞

    pain_md schrieb:

    Progs brauchen ja meist recht lange eh sie hochgefahren sind. dh. es gibt eine zeitliche differenz zwischen aktivieren(starten) und der entgegennahme von eingaben (mouse,keyboard). gibts über die API ne möglichkeit rauszufinden wenn ein prog fertig hochgeladen hat?

    Suchst du vielleicht sowas wie WaitForInputIdle?! 🙂



  • Hi

    Danke für die Antwort. Bringt mich zumindest etwas weiter. und ja, sowas
    wie WaitForInputIdle such ich tatsächlich ;-). thx

    pain


Anmelden zum Antworten