🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: free.it.visual-basic
Article #2978

Re: disabilitare la pressione di ALT-TAB

#2978
From: William
Date: Sun, 01 Dec 2002 10:41
98 lines
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-mail
References: <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]