Rubrik: Maus & Tastatur · Tastatursteuerung | VB-Versionen: VB4, VB5, VB6 | 12.11.01 |
Windowstaste deaktivieren Eine timergesteuerte Prozedur, mit der sich die Windowstaste zum Öffnen des Startmenüs deaktivieren lässt. | ||
Autor: Adrian Schneider | Bewertung: | Views: 24.732 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Manchmal ist es besser, die Windowstaste nicht allen Benutzern zur Verfügung zu stellen (Verbergen des Startmenüs - dann in Verbindung mit dem Tipp Windows-Startbutton manipulieren).
Prinzipiell funktioniert das Ganze so:
- Einsatz eines Timers mit niedrigem Intervall
- Im Timer-Ereignis prüfen, ob die Windows-Taste gedrückt wurde
- Wenn ja, das Drücken der ESC-Taste simulieren, so dass das Startmenü sofort wieder geschlossen wird
Und hier der Code:
' zunächst die benötigten API-Deklarationen Private Declare Function GetAsyncKeyState Lib "user32" ( _ ByVal vKey As Long) As Integer Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) Const KEYEVENTF_KEYUP = &H2 Const VK_ESCAPE = &H1B Const VK_LWIN = &H5B Const VK_RWIN = &H5C
' Prüfen, ob die Windowstaste gedrückt wurde Private Sub Timer1_Timer() If CBool(GetAsyncKeyState(VK_LWIN) And 1) Or _ CBool(GetAsyncKeyState(VK_RWIN) And 1) Then ' Wenn Windowstaste gedrückt ' Escapetaste drücken Call keybd_event(VK_ESCAPE, 0, 0, 0) ' Escapetaste loslassen Call keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) End If DoEvents End Sub
Um das Beispiel zu testen, plazieren Sie ein Timer-Steuerelement auf eine Form und setzen die Interval-Eigenschaft auf 100. Fügen Sie nun den komplette obigen Code in den Codeteil der Form ein und versuchen Sie mal über die Windows-Taste das Startmenü zu öffnen - geht nicht