SendMessage()



  • Das interessiert den Compiler nicht. Es wird mit dieser Funktion der Fokus(im Betriebssystem, also Windows) auf dieses Fenster gesetzt und keybd_event simuliert schickt den Tastendruck an das fokusierte Fenster.

    Probier es mal so:

    keybd_event(VK_MENU, 0, 0, 0);
    keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    

    MfG

    GNUnix



  • ja das bringt ja nichts, ich bruach die Kombination mit ALT + I sonst seh ich das ja nicht, ob er das wirklich simuliert hat.



  • Setz mal zwischen dem Tastendruck und das Lösen eine kurze Warteroutine(sleep oder so) ein. Vielleicht muss das Spiel den Tastendruck erst registrieren.

    Oder so mit SendInput():

    INPUT ipSignal;
        ipSignal.type           = INPUT_KEYBOARD;
        ipSignal.ki.wVk         = byVirtualKeyCode;
        ipSignal.ki.wScan       = 0;
        ipSignal.ki.dwFlags     = 0L;
        ipSignal.ki.time        = 0L;
        ipSignal.ki.dwExtraInfo = 0L;
        SendInput(1, &ipSignal, sizeof(ipSignal));
    
        ipSignal.ki.dwFlags     = KEYEVENTF_KEYUP;
        SendInput(1, &ipSignal, sizeof(ipSignal));
    

    MfG

    GNUnix



  • Woher weiß der Compiler denn, dass sich das SetFocus auf alle keybd_event()s bezieht?!

    Gar nicht, da hier wirklich ein Tastendruck simuliert wird. Also nicht bloß einem Fenster es mitgeteilt sondern allen laufenden Programmen.



  • Ben04 schrieb:

    Woher weiß der Compiler denn, dass sich das SetFocus auf alle keybd_event()s bezieht?!

    Gar nicht, da hier wirklich ein Tastendruck simuliert wird. Also nicht bloß einem Fenster es mitgeteilt sondern allen laufenden Programmen.

    und was bringt dann SetFocus() ?
    Sprich, SetFcous bringt in Kombination mit keybd_event nichts, mit SendInput jedoch doch?!



  • Der Fokus ist im Betriebssystem Windows verankert, durch SetFocus wird diese Variable, Pointer oder was auch immmer auf das neue Fenster gesetzt. keybd_event sendet alle Keyboard-Events an das fokusierte Fenster. Also das hat nix mit dem Compiler zu tun, sondern mit dem Betriebssystem.

    MfG

    GNUnix



  • Ben04 schrieb:

    Gar nicht, da hier wirklich ein Tastendruck simuliert wird. Also nicht bloß einem Fenster es mitgeteilt sondern allen laufenden Programmen.

    ...keybd_event sendet alle Keyboard-Events an das fokusierte Fenster. Also das hat nix mit dem Compiler zu tun, sondern mit dem Betriebssystem.

    das widerspricht sich aber.



  • Ben04 schrieb:

    Gar nicht, da hier wirklich ein Tastendruck simuliert wird. Also nicht bloß einem Fenster es mitgeteilt sondern allen laufenden Programmen.

    Das stimmt auch nicht. Was GNUnix schreibt, ist schon richtig.





  • ja den Thread kenn ich..
    mir ging es jetzt daruaf, auf ein Fenster im Hintergrund einen Tastendruck zu simulieren, so das der User praktisch noch nebenbei etwas machen kann.

    und übrgigens, mit SetFocus() erreicht ich nicht das, was ich wollte s.o.


Anmelden zum Antworten