Hi i am working on a project for cyber cafe.

My problem is that when i am using a form with maximize property who covers all the screen including start menu and status bar but whenever windows key is pressed start menu and status bar showed. so tell me how can i disable left and right windows key of keyboard.

or

i want windows key should be disable till my programme is run on a particular system.

Thanks

if problem is not clear then kindly acknowledge.


pardeep

Hi i am working on a project for cyber cafe. 

My problem is that when i am using a form with maximize property who covers all the screen including start menu and status bar but whenever windows key is pressed start menu and status bar showed. so tell me how can i disable left and right windows key of keyboard.

or 

i want windows key should be disable till my programme is run on a particular system.

Thanks 

if problem is not clear then kindly acknowledge.


pardeep

Hi,

You can use a low- level keyboard hook.

Private 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
  
Private Declare Function CallNextHookEx Lib "user32" ( _
 ByVal hHook As Long, _
 ByVal nCode As Long, _
 ByVal wParam As Long, _
 ByVal lParam As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" ( _
 ByVal hHook As Long) As Long

Private Declare Sub CopyMemory _
 Lib "kernel32" Alias "RtlMoveMemory" ( _
 pDest As Any, _
 pSource As Any, _
 ByVal cb As Long)

Private Type KBDLLHOOKSTRUCT
    vkCode As Long
    scanCode As Long
    flags As Long
    time As Long
    dwExtraInfo As Long
End Type

Private Const HC_ACTION = 0&
Private Const WH_KEYBOARD_LL = 13&
Private Const VK_LWIN = &H5B&
Private Const VK_RWIN = &H5C&

Private hKeyb As Long

Private Function KeybCallback(ByVal Code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Static udtHook As KBDLLHOOKSTRUCT
    
    If (Code = HC_ACTION) Then
        'Copy the keyboard data out of the lParam (which is a pointer)
        Call CopyMemory(udtHook, ByVal lParam, Len(udtHook))
        Select Case udtHook.vkCode
            Case VK_LWIN, VK_RWIN
                KeybCallback = 1
                Exit Function
        End Select
    End If
    KeybCallback = CallNextHookEx(hKeyb, Code, wParam, lParam)
End Function

Public Sub HookKeyboard()
    UnhookKeyboard
    hKeyb = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeybCallback, App.hInstance, 0&)
End Sub

Public Sub UnhookKeyboard()
    If hKeyb <> 0 Then
        Call UnhookWindowsHookEx(hKeyb)
        hKeyb = 0
    End If
End Sub
This article has been dead for over six months. Start a new discussion instead.