Bildschirmtastatur

Hiho Leute,
nun bruache ich mal eure Hilfe. Ich möchte eine Bildschirmtastatur entwickeln, eigentlich ja nichts großes. Grundidee:
Buttonclick -> prozess wechseln über ID -> sendkeys
Nun das etwas schönere Problem:
Wie kriege ich raus, welche ProzessID vor meiner Bildschirmtastaturanwendung aktiv war? Ich habe über einen Thread nachgedacht, doch der läuft ja in meiner Anwendung, d.h. Process.GetCurrentProcess().ID liefert natürlich den code von meiner Bildschirmtastatur, nicht z.B. vom geöffneten Notepad. Kann mir da jemand helfen?
Liebe Grüße
sbbaus

Um welche Programmiersprache handelt es sich denn?
Im Fall von C++ könntest du zB in dem Sourcecode von Autohotkey nachschauen, welche API-Funktionen die verwenden.

Ansonsten ist die MSDN unter Windows immer eine gute Anlaufstelle

Probiert hab ichs bisher in C#, da kann man ja schnell was zusammenklicken, jedoch habe ich hier ein Beispiel in C++ liegen von einer opensource Bildschirmtastatur. Im Grunde genommen gehts mir erstmal um das Verständnis, wie so eine Bildschirmtastatur überhaupt arbeitet, weil sie ja das vorher im Fokus gewesene Programm ja kennen muss (um da nen Sendkeys draufzuknallen). Wie wird sowas gemacht? Bin noch am Suchen, wäre aber super, wenn da schon jemand weiß, wies geht :smiley:!

So, ich habs nun mit nem kleinen Backgroundworker gemacht, der immerwieder die GetForegroundWindow Funktion der WindowsApi aufruft, jedoch noch einen interessanten Effekt, der mir noch etwas unerklärlich ist:
Will ich ans Notepad meine Taste senden, ist das kein Problem, es wird so oft eingefügt, wie ich klicke. Will ich das bei Start->Ausführen machen, so wird nur einmal der Buchstabe eingefügt, ich frage mich wieso? Kennt das Problem jemand?
Liebe Grüße