Benutzer mit den meisten Antworten
STRG+SHIFT+F4 und STRG+SHIFT+F6 abfangen

Frage
-
Hallo,
heute habe ich mal ein Problem mit STRG+SHIFT+F4 und STRG+SHIFT+F6. Ich kann diese Kombinationen nicht abfangen (VB2010). Von F1-F3 etc. kein Problem aber diese beiden, ich nehme an wegen der Verwendung von Windows, funktionieren nicht.Hat jemand eine Lösung für das Problem? Es muss doch möglich sein, von Windows verwendete Kombinationen abzufangen und eigene Verarbeitungen zu starten.
Vielen Dank schon vorab.
Gruß, Sascha
Antworten
-
Hallo SaX21,
Schau Dir mal die folgenden Links an. Vielleicht können sie Dir weiter helfen.
HotKeyForm (hier wird die RegisterHotKey Funktion verwendet…interessant ist hier dass das Fenster wird aktiviert und im Vordergrund gebracht)…im Code musst Du nur die Zeile wechseln dass sie so aussieht:
Dim htk As HotKey = New HotKey("My HotKey", Keys.F6, HotKey.HotKeyModifiers.MOD_CONTROL Or HotKey.HotKeyModifiers.MOD_SHIFT)
Managing Low-Level Keyboard Hooks in VB .NET (hier wir ein Keyboard „Hook“ verwendet)
*******************************************************************************************************************************
Was möchtest Du sagen mit: „Das Event wird angesprochen jedoch trifft die Bedienung nicht.“?
Grüße,
Robert
- Als Antwort markiert SaX21 Dienstag, 29. März 2011 08:55
Alle Antworten
-
Hallo SaX21,
Kannst Du bitte Dein Problem deutlicher und völlig beschreiben?
Was machen diese Kombinationen die Du uns mitgeteilt hast? In welchem Context? In Word? In einer anderen Anwendung?
Umfasse mindestens die folgenden Schritte in der Beschreibung Deines Problems:
1) Eine Übersicht der Funktionsweise von dem Programm
2) Das Ergebnis des aktuellen Codes
3) Was erwartest Du dass Dein Code machen soll
4) Den Inhalt der Eingabedateien (falls zutreffend)
Schließlich, sagt uns diese Datensammlung, was Du von deinem Code erwartest, so dass wir vergleichen können, was es tut, mit dem was Du möchtest. Die meiste Zeit, können die MVP Experten und andere Mitglieder des Forums fast sofort eine Antwort auf Deine Frage geben, indem sie diese Informationen verwenden.
Relevanter Code zu posten wäre auch nicht schlecht oder eine .zip Datei mit den Code (falls der Code zu groß ist) kann man ihm Public Ordner von SkyDrive laden und den link hier Posten. (Wie nutze ich den SkyDrive?)
Danke und Grüße,
Robert
-
Hallo Robert,
ich versuche es mal etwas spezifischer Darzustellen:
If e.Shift = True And e.Control = True Then 'SHIFT+STRG+F4 If e.KeyCode = Keys.F4 Then e.Handled = True '. '. '. '. Exit Function End If end if
Ich möchte die o.g. Tastenkombination in einer VB.NET 2010 Applikation abfangen. Das erfolgt über das KeyDown Event der Forms. In diesem Fall sind es die Kombinationen STRG+SHIFT zusammen mit einer Funktionstaste. STRG+SHIFT+F1 funktioniert z.B. ohne Probleme. Lediglich die o.G. Kombinationen werden bereits von Windows verwendet. Das Event wird angesprochen jedoch trifft die Bedienung nicht.
If e.KeyCode = Keys.F4 Then
Zusammengefasst möchte ich folgendes erreichen: STRG+SHIFT+F4 / F6 soll in meiner VB.NET 2010 Anwendung eine Funktion aufrufen und nicht den aktiven Fensterwechsel (wie von Windows vorgesehen) durchführen.
Ich hoffe jetzt habe ich es nicht komplizierter gemacht als es überhaupt ist.
Gruß,Sascha
-
Hallo SaX21,
Schau Dir mal die folgenden Links an. Vielleicht können sie Dir weiter helfen.
HotKeyForm (hier wird die RegisterHotKey Funktion verwendet…interessant ist hier dass das Fenster wird aktiviert und im Vordergrund gebracht)…im Code musst Du nur die Zeile wechseln dass sie so aussieht:
Dim htk As HotKey = New HotKey("My HotKey", Keys.F6, HotKey.HotKeyModifiers.MOD_CONTROL Or HotKey.HotKeyModifiers.MOD_SHIFT)
Managing Low-Level Keyboard Hooks in VB .NET (hier wir ein Keyboard „Hook“ verwendet)
*******************************************************************************************************************************
Was möchtest Du sagen mit: „Das Event wird angesprochen jedoch trifft die Bedienung nicht.“?
Grüße,
Robert
- Als Antwort markiert SaX21 Dienstag, 29. März 2011 08:55
-
So jetzt funktioniert es:
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, _ ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) _ As Integer Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer Public Const WM_HOTKEY As Integer = &H312 Public Const MOD_ALT As Integer = &H1 'Alt key Public Const MOD_CONTROL As Integer = &H2 'Strg key Public Const MOD_SHIFT As Integer = &H4 'Shift key Public Const MOD_WIN As Integer = &H8 'Win key Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) If m.Msg = WM_HOTKEY Then Dim id As IntPtr = m.WParam Select Case (id.ToString) Case "1004" MsgBox("SHIFT+STRG+F4") End Select End If MyBase.WndProc(m) End Sub
Die Tastenkombination registrieren:
RegisterHotKey(Me.Handle, 1004, MOD_CONTROL + MOD_SHIFT, Keys.F4)
Beim Beenden wieder lösen:
UnregisterHotKey(Me.Handle, 1004)
Danke für die Hilfe.
Gruß,
Sascha
-
Danke für die Hilfe.
Hallo Sascha,
Gerne.
Freut uns dass Du Dein Problem lösen könntest und dass Du gepostet hast wie es bei Dir funktionierte, denn so profitieren unter Umständen auch andere mit dem gleichen Problem davon.
Grüße und Erfolg,
Robert