WinApi: SendMessage. Wie funktionierts?

Hallo
Ich beschäftige mich momentan mit der Win32-Api. Nach etwas Üben mit einem Buch, hab ich mich entschlossen mal ein eigenes kleines Programm zu schreiben. Und zwar soll es einfach eine Taste bzw. einen Tastendruck an ein anderes Programm, genauer eine DirectX Anwendung(Spiel), senden. Dazu habe ich etwas im Internet herumgesucht und auch mein Buch zu Rate gezogen. Nach etwas Lesen wusste ich, dass ich das Zielfenster-Handle mit FindWindow() bekommen kann, und damit mittels SendMessage() eine Nachricht, bzw in meinem Fall einen Tastendruck, senden kann.
So nun zu meinem Problem:
Es funktioniert ganz einfach nicht. Das Handle des Zielfenster zu bekommen funktioniert, dass lasse ich noch im Programm überprüfen. Doch die Nachricht/Tastendruck scheint teilweise nicht wirklich anzukommen. Teilweise daher, da es z.b. funktioniert, wenn ich ein VK_Return schicke. Das wird angenommen und verarbeitet. Ich möchte aber z.B. ein ‚I‘ schicken. dabei passiert allerdings gar nichts. Ich habe die Funktion SendMessage schon in allen Variationen ausprobiert:

SendMessage(hZielFenster,WM\_KEYDOWN,(WPARAM)'I',0 )
SendMessage(hZielFenster,WM\_KEYDOWN,(WPARAM)VkKeyScan('i'),0 )
SendMessage(hZielFenster,WM\_KEYDOWN,VkKeyScan('i'),0 )
SendMessage(hZielFenster,WM\_KEYDOWN,'i',0 )

usw. …
Doch nichts funktioniert. Nun meine Frage:
Könnte vielleicht Jemand von euch mir helfen und sagen, was ich Falsch mache? Vor allem weiß ich nicht was der letzte Parameter von SendMessage() zu bedeuten hat bzw. was ich übergeben muss?

Ich wäre dankbar für jede Hilfe
Gruß Marius

Servus.

Hab vor 6-7 Jahren das verwendet, um Winamp zu steuern. Unter http://forums.winamp.com/showthread.php?threadid=180297 kannst du nachlesen, wie das mit FindWindow, SendMessage prinzipiell geht. Unter http://msdn2.microsoft.com/en-us/library/ms644950.aspx ist die Funktion SendMessage beschrieben. Der letzte Parameter ist einfach ein zweiter Parameter für diese Message. Kannst du gegebenenfalls 0 setzen.

Wenn du Tastendrücke senden willst, verwende doch WM_CHAR als Messagetyp. Dazu hier noch ein Link: http://www.coding-board.de/board/printthread.php?t=1…

mfg.

Hallo
und vielen Dank für Deine Antwort. Ich werde mal in den von dir genannten Seiten schauen und versuchen mein Problem zu lösen.
Mfg Marius

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

So nach einigem Herumprobieren funktioniert es immer noch nicht. Hat nicht noch jemand eine Idee wie es funktionieren könnte. Am besten wäre natürlich ein kleines Code-Beispiel. Wie gesagt ich möchte gerne eine Taste wie a,b,i,c,t … und so witer an ein DirectX Programm/Spiel schicken. Ich wäre für jede weitere Hilfe dankbar.
Mfg Marius

Hallo UsYer.

Ich kenne mich mit DirectX nicht aus, aber bist du dir sicher, dass Input über die normalen Message-Queues der WIN32-API behandelt wird. Wird das nicht mit DirectInput gemacht? Denn dann wird das so nicht funktionieren…

mfg.

Nochmal hi
Nach etwas Herumprobieren klappt es nun so halb mit Sendinput().
Das heißt, dass ich z.B. ein I senden kann. Aber ich müsste eine 1 senden. Also meine Frage weiß jemand den korrekten Scancode der Taste 1. Das was ich bis jetzt dazu gefunden habe, hat alles nicht funktioniert.

MfG Marius

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]