Frage

ANTWORT: Es gibt keine nativen verwaltete Entsprechung für diese Methode. Allerdings kann ein gutes Beispiel verwaltetem Code API unter pinvoke.net über werden .

Hallo alle

ich eine Anwendung, die eine Flagge für ‚Trace-Modus‘ akzeptiert. Trace-Modus wird auf einem Formular, die ein Textfeld ein. Das Textfeld zeigt Ausgang über einen benutzerdefinierten Tracelistener-Objekt. Wenn es eine -t, die auf der Befehlszeile ist, werden die Trace-Fenster aus dem eigenen niedriger Priorität Thread geöffnet werden. Es ist praktisch für Berater, die die Anwendung zu diagnostizieren versuchen, wenn etwas schief geht.

Einige Berater haben beantragt, dass einige obskure Tastenkombination während des Starts drücken auf Trace-Modus drehen sollte, so dass sie gehen müssen nicht an die Befehlszeile es jedes Mal zu aktivieren. Es ist eine vernünftige Anfrage.

Ich will sie nicht auf eine Schaltfläche oder einen Menüpunkt für das, weil viele der kritischen Informationen geben, dass die Berater kümmern, um Trace beim Start angezeigt wird, bevor das Hauptformular erstellt wird, wie die verschiedenen Komponenten instanziiert werden und initialisierte.

Ich dachte, es einfach genug sein sollte die aktuelle Tastatur Zustand in .NET zu erkennen - aber es scheint, dass überall, wo ich suchen, die Beratung zu verwenden ist [DllImport ( „user32.dll“, Entrypoint = „GetKeyboardState“, SetLastError = true)] als Methode zu erkennen, was los ist.

Das ist alles schön und gut - ich bin zufrieden damit. Jedoch als allgemeine Faustregel gilt: Ich versuche sicherzustellen, dass ich benutze nativen .NET Managed Code für Windows-Funktionen, bevor ich gehe versuche, meine eigene Rolle.

Gibt es eine native .NET-Methode oder äquivalent zu user32.dll dem GetKeyboardState?

War es hilfreich?

Lösung

Control.ModiferKeys ist eine statische Eigenschaft Control, das, wenn überhaupt, sind Zusatztasten zur Zeit gedrückt. Ich bin mir nicht bewusst etwas allgemeine Tastaturstatus zu bekommen, scheint wie die meisten Code P / Invoke mit beiden GetKeyboardState oder GetKeyState für bestimmte Tasten zu überprüfen.

Andere Tipps

Sind Sie sicher, dass PreviewKeyDownEventArgs nicht hat, was Sie brauchen? Ist dies der Fall, dann können Sie das PreviewKeyDown Ereignis verwenden.

Eine weitere Option könnte Beschleuniger Schlüssel. Eine Windows-API-Funktion kann einen Beschleuniger-Tabelle in der Ressourcen der Anwendung verwendet Tastatursequenzen auf Befehle auf der Karte, wo ein Befehl ist die gleiche Sache, dass ein Menüpunkt tut; Sie wissen, eine WM_COMMAND Nachricht. Ich weiß, es ist einfach in MFC zu tun mit C ++, aber wenn ich versuche, den C # Weg zu finden, es zu tun, habe ich verloren. Wenn Sie herausfinden, wie Zugriffstasten mit C # tun, dann könnte es sich um eine flexible Lösung sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top