用虚拟桌面限制用户权限,防止用户访问硬盘,热键在2000下怎样屏蔽掉???

解决方案 »

  1.   

    要写系统键盘钩子了最好用Visual C++去写
      

  2.   

    WinKey+L,要在Win2000编写可能死机(对于被限制者是这样的)程序,效果总是不好的。
    Windows钩子函数是SetWindowsHookEx,你马上会发现不能达到限制用户输入的目的的。
      

  3.   

    你试试看hHook=SetWindowsHookEx(WH_KEYBOARD, AddressOf 回调函数, 0, App.ThreadID)WH_KEYBOARD可以用底层键盘钩子代替,可是常量名忘了。WH_LLKEYBOARD?...不要在回调函数里面写CallNextHookEx,退出程序要调用
    UnhookWindowsHookEx hHook
      

  4.   

    用这个,可以达到屏蔽热键的目的(ctrl+alt+Del不能屏蔽)WH_KEYBOARD_LL=13
      

  5.   

    2000下加vb不好弄,我用的时候改注册表的方法,使alt+del+ctrl掉出来的窗口变灰
    只能算是马马虎虎吧,你去搜索下,很多讨论这问题的,都是没有下文的
      

  6.   

    参考下面的例子,是在2000下监视用户鼠标和键盘的操作,你可以稍加修改:
    ====================================
    ''form1:
    Sub form_load()
       lMouseHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
       lKeyBoardHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       If lMouseHook <> 0 Then
          UnhookWindowsHookEx lMouseHook
       End If
       
       If lKeyBoardHook <> 0 Then
          UnhookWindowsHookEx lKeyBoardHook
       End IfEnd Sub================================================================
    'module1:
    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 UnhookWindowsHookEx Lib "user32" (ByVal hHook 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 LongPublic Const HC_ACTION = 0
    Public Const WH_KEYBOARD_LL = 13
    Public Const WH_MOUSE_LL = 14'鼠标消息
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_MOUSEWHEEL = &H20A
    Public Const WM_MOUSEMOVE = &H200'键盘消息
    Public Const WM_KEYDOWN = &H100
    Public Const WM_KEYUP = &H101
    Public lMouseHook As Long, lKeyBoardHook As LongPublic Function LowLevelMouseProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If code = HC_ACTION Then
          Select Case wParam
            Case WM_MOUSEMOVE
               Form1.Text1 = "mouse MOVE"
            Case WM_RBUTTONUP
                Form1.Text1 = "mouse RBUTTONUP"
            Case WM_RBUTTONDOWN
                Form1.Text1 = "mouse RBUTTONDOWN"
            Case WM_LBUTTONUP
                Form1.Text1 = "mouse LBUTTONUP"
            Case WM_LBUTTONDOWN
                Form1.Text1 = "mouse LBUTTONDOWN"
            Case WM_MOUSEWHEEL
                Form1.Text1 = "mouse MOUSEWHEEL"
          End Select
        End If    If code <> 0 Then
            LowLevelMouseProc = CallNextHookEx(0, code, wParam, lParam)
        End If
      
    End Function
    Public Function LowLevelKeyboardProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If code = HC_ACTION Then
            Select Case wParam
                Case WM_KEYDOWN
                    Form1.Caption = "key down"
                Case WM_KEYUP
                    Form1.Caption = "key up"
            End Select
        End If
            
        If code <> 0 Then
            LowLevelKeyboardProc = CallNextHookEx(0, code, wParam, lParam)
        End IfEnd Function