Direktes Senden von Tastenanschlägen an einen anderen Prozess per Hook

Frage ich mich, nachdem das hantieren mit allen möglichen Themen mit SendInput, SendKeys, PostMessage, SendMessage, SendNotifyMessage, keybd_event, usw. und so Fort. Zu finden, die gut... zu senden versuchen, eine Tastatur-Eingabe zu einer anderen nicht-Vordergrund-Prozess ist sehr pingelig und unzuverlässig.

Habe ich versucht, eine Methode SendInput, wo ich trick die Z-Reihenfolge (für das aktuelle Fenster auf der Oberseite) und schnell Vordergrund der 3rd-party-Fenster, die Eingabe abzuschicken, und re-Vordergrund-mein Fenster. Die letztlich gescheitert, und auch, irgendwie, nicht sicher, warum, gelang es, auch proc die Tastenanschläge auf meinem Fenster, während Sie nicht im Vordergrund (was zu einer Endlosschleife senden und empfangen zwischen zwei Fenstern, bis ich es geschafft, den Prozess).

Ich habe versucht, verschiedene Kombinationen von SendMessage und PostMessage. Eine für unten, eine für oben, wie die Verwendung sowohl für die nach oben und unten führt zu Fragen, wie mit PostMessage für beide, wodurch der Schlüssel zu duplizieren, die auf den Erhalt Fenster. oder SendMessage für beide, die verursacht Probleme mit Texteingabe, aber auch andere Funktionen gearbeitet, ok. SendMessage für das keydown-Ereignis und das PostMessage für keyUp arbeitete für alle Funktionen, aber die Zuverlässigkeit-rate drastisch zurückgegangen, ebenso wie das hinzufügen der Latenz in die wichtigsten Ereignisse. Nur eine Kombination von PostMessage für keydown und SendMessage für keyup geschafft, etwas nützliches zu tun, mit vielleicht 5-10% fail-rate von keyup-Registrierung. Gleiches gilt für SentNotifyMessage (verhält sich im Grunde in der gleichen Weise wie SendMessage soweit Zuverlässigkeit geht).

Also im Grunde genommen, bin ich am Pfingstmontag zu Ende, und ich wollte wissen, etwa direkt injizieren Sie einen Haken in das Ziel-Fenster, und etwas voodoo zu senden Tastatureingaben, um es auf diese Weise, unter Umgehung der message queue etc. Tun dies in einer Weise, die nicht proc global-key-Ereignisse, und nur auf das Ziel-Fenster. Nur die Sache ist ich bin mir ziemlich unknowledgeable, wenn es um die Injektion/Haken, usw. So Wende ich mich an Euch, die community.

Wut tun?

InformationsquelleAutor der Frage Hydra | 2012-05-02

Schreibe einen Kommentar