AW: Wie mit VBA die PrintScreen-Taste deaktivieren?
11.07.2003 16:25:26
Michael Scheffler
Hi.
unter Verwendung einiger Versatzstücke aus dem Netz und dem API-Guide - eine Form mit zwei Buttons:
Option Explicit
Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private Const KC = 104
Private Const KC_ALT = 105
Private Const KC_CTRL = 106
Private Const VK_SNAPSHOT = &H2C
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type Msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private bCancel As Boolean
Private Sub ProcessMessages()
Dim Message As Msg
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, 0, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'minimize the form
'WindowState = vbMinimized
End If
'let the operating system process other events
DoEvents
Loop
End Sub
Private Sub cmdAus_Click()
Call RegisterHotKey(0, KC_ALT, MOD_ALT, VK_SNAPSHOT)
Call RegisterHotKey(0, KC_CTRL, MOD_CONTROL, VK_SNAPSHOT)
Call RegisterHotKey(0, KC, 0, VK_SNAPSHOT)
DoEvents
End Sub
Private Sub cmdEin_Click()
Call UnregisterHotKey(0, KC_ALT)
Call UnregisterHotKey(0, KC_CTRL)
Call UnregisterHotKey(0, KC)
DoEvents
End Sub
Gruß
Micha