Serial Port --> Keyboard

Hi!
Ich hab ein Problem:

Nachdem ich diesen "hack" an einem Chatboard duchgeführt habe und ich den keyboard initializiert hatte (siehe ganz unten), muss ich nun ein Programm schreiben, der die über seriellen Port erhaltenen Keystrokes an den OS (win98 - winXP) weitersendet.

Meine Ideen waren:

1) Einen Keyboard-Treiber schreiben, der die Informationen von dem seriellen Port liest und ihn dann weiterleitet.
Problem: Ich habe den DDK nicht (und will ihn auch nicht kaufen) UND ich habe noch _nie_ ein Treiber geschrieben... Damit fällt diese Idee schon am Anfang ins Wasser :(


2) Mit dem Befehl keybd_event() die Tastenschläge simulieren. Meine Idee war, ein Service (Dienst) zu installieren und dann damit die Serial --> Keyboard kommunikation aufzubauen
Problem: Mein problem ist, dass bei diesem Befehl nur das Window, welcher den Fokus hat, den Keystoke erhält. Und da ich den Fokus haben muss, damit ich den Befehl aufrufen kann, erhalte ich den Keystroke und nicht andere. 2. Bei allen Samples, die ich durchforstet habe wurde dies gelöst, indem der nutzer ein Title angeben musste, die dann mit dem Befehl ThreadInput() (oder ähnlich) mit dem Hauptprogramm verbunden wurde. Da ich aber als ein Dienst fungiere habe ich diese "Freiheit" nicht...

3) Mit einem globalen Keyboard Hook (also dll, etc.) mich in allen MSG-threads einlinken und mit einem Dienst als Server zu arbeiten. Dann könnte ich, wenn ich ein Keystroke vom Serial bekomme den Keyboard sperren (alle solche Tastendrücke verwerfen) und so eine Kollision verhindern.
Problem: Ich habe keine Information darüber gefunden, ob ich mit einem Hook auch Tastendrücke hinzufügen könnte. Ich weiß schon, wie die Dll auszusehen hat, wie die Komunikation Dll <--> Host verlaufen sollte, wie ich keystrokes verwerfe, doch nichts, wie ich durch ein Hook keystrokes in die Msg-Threads "injizieren" könnte.


Naja, die Diskussion ist eröffnet :D
MfG
Mobius

P.S.: nachdem im Chat einige User eine rege Interesse an diesem "Chatboard" gezeigt haben, werde ich den Source-code des fertigen "Treibers" hier veröffentlichen.
 
Zurück
Oben