none
Windows Tastenkombination ausschalten / abfangen RRS feed

  • Frage

  • hi. Noch eine Frage von mir... ich versprech, das ist erstmal die letzte für ne Weile ^^

    Ich bräuchte für ein Programm die Möglichkeit die Windows Tastenkombinationen auszuschalten, bzw abzufangen. Bei mir geht es um STRG+b, STRG+c, STRG+d, ..... bis STRG+L. Das verursacht in meiner Textbox unschöne Effekte (Zentrierung des Textes, Tabs usw), die ich gerne unterdrücken würde. Habe aber bisher nichts sinnvolles gefunden. Und ja, es sollte STRG sein. Grund: Es geht darum einen µC über einen seriellen Port anzusteuern. Auf diesem Läuft ein Programm, das dem Benutzer Eingabevorschläge ausgibt, eben die STRG+__ Kombinationen. Es ist mir allerdings nicht gestattet das Programm auf dem µC umzuschreiben um statt STRG andere Tasten zu verwenden...

    Gibt es da eine Lösungsmöglichkeit?

    Donnerstag, 23. Februar 2012 16:10

Antworten

Alle Antworten

  • Hallo,

    ich vermute mal, dass es sich um eine RichTextBox handelt? Probier mal im OnKeyDown-Message-Handler

    if (e->Control) e->Handled = true;

    Dann werden die Strg-Key events ignoriert.

    Alex


    • Bearbeitet LionAM Montag, 27. Februar 2012 16:33
    • Als Antwort vorgeschlagen LionAM Montag, 27. Februar 2012 16:44
    Montag, 27. Februar 2012 16:32
  • Das ändert  bei mir irgendwie nichts...

    Außerdem habe ich mich wohl falsch ausgedrückt: Ich will die Windows-eigenen STRG+X Kombinationen unterdrücken, aber eigene beibehalten. Also praktisch umschreiben der Kombinationen.

    void Form1::keyPressed(System::Object^  sender, KeyEventArgs^  e)
    {

    if(serial->SerPort->IsOpen && e->Control && MCControl == true) { if(e->KeyCode == Keys::B) { array<unsigned char>^ b = {2}; serial->sendSerial(ascii->GetString(b)); }

    }

    }

    Habe das drin. Er muss also den ASCII Code Nummer 2 schicken, wenn ich STRG+b drücke (und der Serielle Port gerade offen ist, und eine Checkbox namens MCControl aktiviert ist).

    Und ja, es handelt sich um eine RichTextBox.

    Montag, 27. Februar 2012 18:35
  • In deinem Code fehlt noch die Anweisung

    e->Handled = true;

    um die Tastenkombination abzufangen. Daher wird sie ja an die RichTextBox weitergesendet...

    Alex


    Montag, 27. Februar 2012 22:45
  • Ich hatte die Codezeile drin, aber sie hatte nicht den gewünschten Effekt. Es wurden immernoch Tastenkombinationen ausgeführt, wie z.B. STRG+i führte zu einer Einrückung. (Habe oben nur mal reingeschrieben, was und wie ich das Keypressed_Event drin habe)

    Dienstag, 28. Februar 2012 09:56
  • Du hast recht - Strg+i wird nicht abgefangen. Strg+e und Strg+c sind bei mir aber danach wirkungslos. (Andere hatten bei mir auch vorher keine Wirkung...)

    Vielleicht hilft dir das weiter:
    http://www.vbdotnetforums.com/vb-net-general-discussion/29996-how-disable-ctrl-i-tab-rich-text-box-visual-basic-net-project.html

    Alex

    • Als Antwort markiert Stippy19 Donnerstag, 1. März 2012 13:51
    Dienstag, 28. Februar 2012 11:22
  • Hört sich gut an. Werde ich heut Abend ausprobieren.

    Danke schonmal.

    Werde dann auch die Antwort markieren, falls es klappen sollte ^^

    YEAH!! Super. Vielen Dank. Mit "if(e->Control) e->SuppressKeyPress;" Funktionierts.
    Vielen vielen Dank. Das schafft mir einen sehr unschönen Fehler vom Hals XD

    • Bearbeitet Stippy19 Dienstag, 28. Februar 2012 17:54
    • Als Antwort markiert Stippy19 Dienstag, 28. Februar 2012 17:55
    • Tag als Antwort aufgehoben Stippy19 Donnerstag, 1. März 2012 13:51
    Dienstag, 28. Februar 2012 11:52