Article View: free.it.visual-basic
Article #2978Re: disabilitare la pressione di ALT-TAB
From: William
Date: Sun, 01 Dec 2002 10:41
Date: Sun, 01 Dec 2002 10:41
98 lines
4203 bytes
4203 bytes
questo disattiva la pressione dei tasti ALT-TAB, CTRL-ESC, ALT-ESC e del
pulsante Start.
questo codice lo metti in un modulo:
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
Public Declare Function SetWindowsHookEx Lib "user32" Alias
"SetWindowsHookExA" _
(ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal
dwThreadId As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam
As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Public Const HC_ACTION = 0
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const VK_TAB = &H9
Public Const VK_CONTROL = &H11
Public Const VK_ALT = &H12
Public Const VK_ESCAPE = &H1B
Public Const WH_KEYBOARD_LL = 13
Public Const LLKHF_ALTDOWN = &H20
Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
Time As Long
dwExtraInfo As Long
End Type
Dim p As KBDLLHOOKSTRUCT
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean
If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam =
WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory p, ByVal lParam, Len(p)
fEatKeystroke = _
((p.vkCode = VK_TAB) And ((p.flags And LLKHF_ALTDOWN) <> 0))
Or _
((p.vkCode = VK_ESCAPE) And ((p.flags And LLKHF_ALTDOWN) <>
0)) Or _
((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And
&H8000) <> 0)) Or _
((p.vkCode = 91) And ((p.flags And 1) <> 0))
End If
End If
If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal
lParam)
End If
End Function
poi ti fai una form con un checkbox (chkDisable) e inserisci questo codice:
Dim hhkLowLevelKybd As Long
Private Sub chkDisable_Click()
If chkDisable = vbChecked Then
hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf
LowLevelKeyboardProc, App.hInstance, 0)
Else
UnhookWindowsHookEx hhkLowLevelKybd
hhkLowLevelKybd = 0
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
End Sub
"Tanjp" <tangusso@supereva.it> ha scritto nel messaggio
news:3u6u9.74032$RO.1878968@twister1.libero.it...
> Come posso disabilitare la pressione di ALT-TAB in Windows Xp?
> Utilizzando la seguente API non funziona:
>
> Public Sub AllowKeys(bParam As Boolean)
> Dim lRetVal As Long, bOld As Boolean
>
> lRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, Not bParam,
> bOld, 0&)
> End Sub
>
> Grazie.
>
>
>
>
Technical Details
Message-ID:
<NHlG9.42929$3l.1204561@twister1.libero.it>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-04!supernews.com!news.maxwell.syr.edu!news.mailgate.org!nntp.infostrada.it!twister1.libero.it.POSTED!not-for-mailReferences:
<3u6u9.74032$RO.1878968@twister1.libero.it>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: f94ee,7c31084f764f85d1 X-Google-Attributes: gidf94ee,public X-Google-ArrivalTime: 2002-12-01 02:42:05 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-04!supernews.com!news.maxwell.syr.edu!news.mailgate.org!nntp.infostrada.it!twister1.libero.it.POSTED!not-for-mail From: "William" <willy78@libero.it> Newsgroups: free.it.visual-basic References: <3u6u9.74032$RO.1878968@twister1.libero.it> Subject: Re: disabilitare la pressione di ALT-TAB Lines: 100 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-ID: <NHlG9.42929$3l.1204561@twister1.libero.it> Date: Sun, 01 Dec 2002 10:41:49 GMT NNTP-Posting-Host: 151.30.161.4 X-Complaints-To: abuse@libero.it X-Trace: twister1.libero.it 1038739309 151.30.161.4 (Sun, 01 Dec 2002 11:41:49 MET) NNTP-Posting-Date: Sun, 01 Dec 2002 11:41:49 MET Organization: [Infostrada]