PostMessage nach Flash MX verschicken ???
-
Hi,
habe da so ein klitze kleines Problem. Und zwar hätte ich gerne, daß Flash MX
auf meine eigenst kreierten Messages reagiert. Vorab, geht das überhaupt?Ich weiss, daß Flash eine Script Sprache ist und daß es dort SystemEvents wie
OnKeyPress() etc. gibt. Meine Gedanke war nun, daß doch diese SystemEvents
unter der Decke auf das WindowsMessageing System zugreifen müßten um sich so
informationen wie WM_KEYDOWN oder WM_CHAR zu holen. Also hab´ ich mir gedacht,
schicke ich meiner Flash exe (Titel des Windows war mir hierbei bekannt) ein
PostMessage mit einem Handle auf meine Flash exe, WM_CHAR, VK_P (oder
ähnliches) und einem scancode und hoffe, daß es tut. Leider nöcht!.Habe dann verschiedene Varianten der scancodes, u.a. VkKeyScan('P') und
OemKeyScan(0x50) geschickt allerdings ohne Ergebniss.Ein Versuch sah z.B. so aus:
unsigned int scancode=LOWORD(OemKeyScan(0x50));
PostMessage(myWindow, WM_CHAR,'P',scancode);Kann mit vielleicht jemand sagen, wie ich generll Messages in Flash MX
einarbeiten kann, daß ich auf diese Reagieren kann?Das ganze soll übrigens dafür dienen, Daten von extern über z.B. LPT
einzulesen und diese Daten dann Flash MX zuzuführen. Gibt es hier vielleicht
noch eine andere Variante dies zu realisieren?Danke und Gruß Thoddie
-
Vorweg: ich hab davon eigentlich gar keine Ahnung
Aber hast du mal versucht anstatt WM_CHAR ein WM_KEYDOWN und WM_KEYUP zu senden? WM_CHAR muss ja nicht unbedingt abgefragt werden
-
Ja hab´ ich versucht. Vorallem ist es auch glaube ich so, daß TranslateMessage
bei einem WM_KEYUP und/oder WM_KEYDOWN automatisch eine WM_CHAR hinterher
schickt. Und da ich nicht weiss, ob es in Flash eine "TranslateMessage" gibt
(und wenn ja, wie sie funktioniert), habe ich mir gedacht, direkt das ASCII
char zu senden, ohne WM_KEYUP/DOWN. Wie gesagt, hab´ ich alles schon
ausprobiert, leider vergebens.Hat noch jemand vielleicht ne Ahnung?
-
Du kannst auch mal mit Spy++ bzw. Winspector o.ä. schauen, was für Messages so gesendet werden
-
Auch schon alles ausprobiert. Der Spy gibt Dir noch zusätzlich Angaben über
Repeat Raten und ob die Shift Taste oder die Alt Taste mit gedrückt wurden,
all das wird allerdings wiederrum im scan code kodiert. Habe schon versucht
genau das Nachzubilden, was der Spy mir liefert. Allerdings auch vergebens.Noch ne Idee
??
-
//vs:shifstate (0001=shift,0010=ctrl,0100=alt //vk: virtueller keycode (für 0..9 und A..Z == char) void SendKey(UINT vs,UINT vk){int a; if (vs) for (a=0,a<=2,a++)if (vs & 1<<a) keybd_event(16+a,0,0,0); keybd_event(vk & 0xff,0, 0); keybd_event(vk & 0xff,0, KEYEVENTF_KEYUP,0,0); if (vs) for (a=2;a>=0;a--)if (vs & 1<<a) keybd_event(16+a,0,KEYEVENTF_KEYUP,0);} SendKey(0,'A');//a SendKey(1|4,'A');//shift+alt+a
vorher SetActiveWindow(flash)
hoffe beim umformatieren sind nicht alzu viele fehler aufgetreten
-
Hm, und wo finde ich die Funktion keybd_event(...) bzw.
was genau soll die machen und wie kann ich das jetzt in die PostMessage()
Methode mit dem scancode einbauen?Danke und Gruß
-