~ und @ mit keybd_event()



  • Hallo, Leute!
    Ich bins mal wieder und habe mal wieder eine Frage zu keybd_event(). Was mache ich eigentlich, wenn ich das Zeichen "~" oder "@" senden will? Ich weis echt nicht, wie das geht, weil ich muss ja für "@" ALT GR zusammen mit "q" drücken, aber wie drücke ich ALT GR? Die Taste ist nämlich nirgends in der MSDN aufgeführt bei den Virtual Keycodes 😞 ... jönnt ihr mir da helfen???

    Danke & Gruss,
    ~cp code_pilot



  • VkKeyScan(Ex) vielleicht 🙄



  • Hmm ja hab ich mir auch gedacht, aber da gibt es ja nur SHIFT, CTRL, ALT und diesen komischen Hankaku key, aber nix ALT GR. Haben die Amis überhaupt ALT GR auf ihrer Tastatur? Ich denke mal nicht wg. der nicht vorhandenen Umlaute. Aber möglich sein muss es doch...

    1 Either SHIFT key is pressed. 
    2 Either CTRL key is pressed. 
    4 Either ALT key is pressed. 
    8 The Hankaku key is pressed 
    16 Reserved (defined by the keyboard layout driver). 
    32 Reserved (defined by the keyboard layout driver).
    

    cu
    ~code_pilot



  • hey cool ich hab die Lösung: Man muss CTRL und ALT zusammen drücken, dann hat mal ein ALT GR unter Windoofs 🙂 Juhhuuuuu...

    thx
    ~code_pilot



  • steht doch in der MSDN-Library 🤡 - VkKeyScan liefert dir doch sicher auch das entsprechende Ergebnis 🙄



  • ja hast recht. Ist auch irgendwie ne Scheisslösung so, aber ich weis nicht wie ich das rumshiften muss. Ich hab mal folgendes probiert:

    short sVal = VkKeyScan(ch);
    short tVal;
    bool shift = false;
    bool alt = false;
    bool ctrl = false;
    BYTE bKey=(BYTE)(sVal);
    tVal=(BYTE)(sVal>>8);
    if((tVal & 0x01) == 0x01) shift=true;
    tVal=(BYTE)(sVal>>8);
    if((tVal & 0x02) == 0x01) ctrl=true;
    tVal=(BYTE)(sVal>>8);
    if((tVal & 0x04) == 0x01) alt=true;
    
    if(shift) keybd_event(VK_SHIFT,0,0,0);
    if(alt) keybd_event(VK_MENU,0,0,0);
    if(ctrl) keybd_event(VK_CONTROL,0,0,0);
    
    keybd_event(bKey,0,0,0);
    keybd_event(bKey,0,KEYEVENTF_KEYUP,0);
    
    if(shift) keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
    if(alt) keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
    if(ctrl) keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
    

    🙄 😮 😕

    Könnt ihr mir helfen??



  • LOBYTE und HIBYTE 😉

    (tVal & 0x04) == 0x01
    

    das kann ja nicht gehen 🙄 versuch es mal so

    (tVal & 0x04) == 0x04
    


  • Hey super das funkt ja, danke 🙂

    Ich dachte er prüft das Byte an dieser Position auf 1 für gesetzt 😉 lol naja wir hatten das mal in der Berufsschule, aber da hab ich diese rumshifterei auch nie kapiert 😞 ... naja danke auf jeden fall 🙂

    Gruss
    ~cp code_pilot



  • code_pilot schrieb:

    aber wie drücke ich ALT GR? Die Taste ist nämlich nirgends in der MSDN aufgeführt bei den Virtual Keycodes 😞 ...

    keybd_event(VK_RMENU, 0, 0, 0);
    keybd_event('Q', 0, 0, 0);
    keybd_event('Q', 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0);
    


  • naaa gut so GATES auch 😉

    Thx. 👍


Log in to reply