bestimmte Tasten deaktivieren



  • budili schrieb:

    bzw. habe auch net viel Zeit atm da zu recherchieren, weil muss an dem
    richtigen Projekt arbeiten, das mache ich so nebenbei in den Pausen 😃

    Dann solltest du das vielleicht etwas zurückstellen und dich erstmal auf den wesentlichen Teil des Projekts (sprich: Das Programm selber läuft fehlerfrei) konzentrieren. Und die Tastatur kannst du afaik nur entweder komplett abschalten (das wird nichts, wenn du sie im Programm noch brauchst) oder komplett einschalten (in dem Fall mußt du "verbotene" Tasten per Hook abfangen und neutralisieren).



  • ja schon, nur ich könnte es halt nach den Eingabe praktisch deaktivieren...

    weil danach bräuchte man die nicht.



  • Vielleicht reicht ja für denjenigen, der mit deinem Programm arbeitet, ein "Bitte nicht anfassen" Schild, das er auf die Tastatur legen kann 😃

    (ansonsten: Wir haben dir hier eine Lösung genannt - nimm sie oder lass es bleiben)



  • hmm.. nee andere Frage:

    und zwar gibts da ne Möglichkeit ne bestimmte Taste zu setzen?

    z.B. ich drücke einen Button und die Enter Taste oder WinTaste wird
    gesetzt und übergibt das dem OS ??

    thx



  • SendInput



  • moin,

    irgendwas geht da nicht so Recht...

    ich will mir nun die Struktur für sendInput erzeugen..

    INPUT structInput;
    structInput = new INPUT();

    aber das hier will er nicht machen..

    Compilermeldung--> Fehler: E2034 Konvertierung von tagINPUT nach tagINPUT nicht möglich....

    wieso macht er das nicht?



  • new liefert einen Zeiger, also müsstest du den auch in einer Zeigervariablen (INPUT* pinput) speichern. Alternativ kannst du den new-Aufruf auch weglassen und direkt mit deiner Stack-Variablen weiterarbeiten:

    INPUT input;
    SendInput(1,&input,sizeof(input));
    


  • boaa VIELEN DANK !!

    stand irgendwie auf der Leitung... und bin net weiter gekommen.

    aber nun gehts.

    Also der Hook scheint auch zu laufen 😃 😃 😃



  • hmm noch ne andere Frage:

    wie frage ich eigentlich so ne Tastenkombination ab?
    bsp: Str + Esc

    also wenn 2 Tasten gedrückt werden.

    mit dem && gehts doch nicht oder ??

    bsp: if ( wParam == VK_CONTROL && ..... )



  • Die WM_KEYDOWN etc reagieren nur auf einzelne Tasten. Aber du kannst über GetAsyncKeyState() abfragen, ob eine Taste gerade gedrückt ist:

    if(GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(VK_ESCAPE))...
    


  • hmm irgendwie klappt das nicht ganz...

    diese if-Abfrage ist immer false bei dem...
    es sei den ich halte die Str Taste permanent gedrückt,
    aber nur kurz drücken und hinterher Esc funzt net...

    kann ich mit der Funktion "sendInput" auch 2 Tasten senden?
    eine funktioniert ja mittlerweile, aber wie geht das mit 2 ??



  • budili schrieb:

    hmm irgendwie klappt das nicht ganz...

    diese if-Abfrage ist immer false bei dem...
    es sei den ich halte die Str Taste permanent gedrückt,
    aber nur kurz drücken und hinterher Esc funzt net...

    Was erwartest du denn? Wenn du die Tasten nacheinander betätigst, erkennt das niemand als Tasten-Kombination an.

    kann ich mit der Funktion "sendInput" auch 2 Tasten senden?
    eine funktioniert ja mittlerweile, aber wie geht das mit 2 ??

    Das funktioniert genauso wie mit der Tastatur: Du schickst erst Key-Down-Befehle und danach die zugehörigen Key-Up-Befehle.

    INPUT data[4];
    for(int i=0;i<4;++i) data[i].type=INPUT_KEYBOARD
    data[0].wVk = data[3].wVk = VK_CONTROL;
    data[1].wVk = data[2].wVk = VK_ESCAPE;
    data[2].dwFlags = data[3].dwFlags = KEYEVENTF_KEYUP;
    
    SendInput(4,data,sizeof(INPUT));
    

Anmelden zum Antworten