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ß




Anmelden zum Antworten