如题,就是不让系统的软件切换起作用。

解决方案 »

  1.   

    软件切换还有别的吧,比如win键
      

  2.   

    这里有个代码→http://hi.baidu.com/%B3%C2%B7%E5clg/blog/item/b419e4caaeede580c9176856.html
      

  3.   

    提示:操作符AddressOf使用无效。
    这个API的操作还真的不熟,因此不知道要如何改
      

  4.   

    dbcontrols 给你发的那个代码的前半部分应该放到模块中
      

  5.   

    老马的网站有个程序,试试
    http://www.m5home.com/bbs/thread-1040-1-1.html初始密码是123456,别弄忘了.代码中有注入winlogon.exe行为,安全软件可能要有动作.这是使用高手阿国的锁定键盘代码做成的.</p><p>当本程序运行时,键盘没用了~(除开关机键.那几个键好象没办法屏蔽)</p><p>只能在屏幕上输入正确的密码后,才可以解锁
      

  6.   

    哈,我当然是放进去了。但仍无法运行,就是提示我说的那一句。
    问题已经解决:模块内容:
    Option ExplicitPublic 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_ESCAPE = &H1BPublic Const WH_KEYBOARD_LL = 13
    Public Const LLKHF_ALTDOWN = &H20Public Type KBDLLHOOKSTRUCT
        vkCode As Long
        scanCode As Long
        flags As Long
        time As Long
        dwExtraInfo As Long
    End TypePublic lHook As LongDim p As KBDLLHOOKSTRUCT'键盘钩子
    Public Function CallKeyHookProc(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.flags And LLKHF_ALTDOWN) <> 0) Or _
                ((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) Or _
                ((p.vkCode = 91) Or (p.vkCode = 92) Or (p.vkCode = 93))
                '判断是否按下了:TAB+ALT、Esc+ALT、Alt(Alt+F4)、Esc+Ctrl、左右 Win 和徽标键
            End If
        End If
        
        If fEatKeystroke Then
            ' 设置为 1 可以屏蔽按键
            CallKeyHookProc = 1
        Else
            CallKeyHookProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
        End If
    End Function
    窗口程序:
    Private Sub Form_Load()
        lHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        UnhookWindowsHookEx lHook
    End Sub