BN_CLICKED sowie tastatureingaben simulieren



  • Guten Abend Zusammen,

    was mir letztens erst aufgefallen ist:

    Ich hab mir mal ein Programm geschrieben, das bei Buttons das BN_CLICKED-Ereignis auslöst, indem es ganz einfach diese Nachricht an die jeweilige Schaltfläche sendet. Nur funktioniert das bei einigen Programmen nicht... ?
    Wenn man jedoch mit der Maus manuell drauf klickt, so funktioniert es.
    (getestet mit RawWrite 0.7)
    Auch bei Spielen wie Gta San Andreas habe ich beobachtet, dass es im Gegensatz zur Vorgängerversion Gta Vice City nicht mehr möglich ist, Tastatureingaben über keybd_event oder das DotNet-Adäquat "SendKeys" an das Spiel zu senden und somit zu simulieren. Die Do-It-Yourself -Methode funktioniert auch hier wieder ^^ (also wenn man selbst die Tastatur in die Hand nimmt).

    Sagt mal, wie machen die das eigentlich ? 😃

    Greetings, Xzi-bit



  • Xzibit schrieb:

    Ich hab mir mal ein Programm geschrieben, das bei Buttons das BN_CLICKED-Ereignis auslöst, indem es ganz einfach diese Nachricht an die jeweilige Schaltfläche sendet.
    Nur funktioniert das bei einigen Programmen nicht... ?

    Wenn z.B. ein Button gesubclassed ist, dann kannste ein BN_CLICKED-Ereignis auch zusammenfrickeln :

    (...)
      case 0x00F3 : { // BM_SETSTATE
       switch (wparam) {
        case  0 : {btn1000->lock_lbtn = 0; break; } // FLAG SETZEN
        default : {btn1000->lock_lbtn = 1; break; } // TRUE, HIGHLIGHTED
       }
       break;
      }
    
      case 0x0202 : { // WM_LBUTTONUP
       if (btn1000->lock_lbtn == 1) { // FLAG AUSWERTEN
        btn1000->appnotify (btn1000->appself,btn1000->id,msg,0,0);  // BUTTON CLICKED MOUSE LEFT
       }
       break;
      }
    (...)
    

    Auf ein BN_CLICKED braucht dann nicht mehr reagiert zu werden.
    So oder ähnlich läufts auch mit den anderen Ereignissen. Hehehe.


Anmelden zum Antworten