Tastendruck an Programm senden funktioniert nicht - alternative zu keybd_event?



  • Hallo!

    Mit folgender funktion mochte ich gerne ein Tetris, das in Java programmiert ist, steuern. Es bewegt sich leider nichts. Das Richtige Fenster wird jedoch gefunden. Das Fenster ist ein FullScreen.

    void __fastcall TMain::DoMove(int Movement, int Rotation)
    {
            HWND hwnd = FindWindow(NULL, "Tetris");
            if(hwnd)
            {
    
                    SetForegroundWindow(hwnd);
    
                    if (Movement > 0)
                    {
                            for (int i = 0; i < Movement; i++)
                            {
                                    keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                    keybd_event(VK_RIGHT, 0x27, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                            }
                    }
                    else
                    {
                            for (int i = 0; i < -Movement; i++)
                            {
                                    keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | 0, 0);
                                    keybd_event(VK_LEFT, 0x25, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                            }
                    }
    
                    for (int i = 0; i < Rotation; i++)
                    {
                            keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | 0, 0);
                            keybd_event(VK_UP, 0x26, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                    }
            keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | 0, 0);
            keybd_event(VK_SPACE, 0x20, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
            }
    
    }
    

    Über eine Idee oder ein Vorschlag wie man dieses Problem lösen kann, vielleicht auch "Hardwaremässig eingreifen" da ich das Spiel immer steuern kann, freue ich mich.

    Grüsse

    Wild


Anmelden zum Antworten