window key???很难...如果要屏蔽开始按钮倒是简单...

解决方案 »

  1.   

    每次都以为这些问题很简单,可让人头痛的是,每次回答以后都没有人愿意给分
    我来CSDN都是看的,现在都不想发表了
      

  2.   

    上面的方法好像不行吧。你需要用FINDWINDOW先获得开始键的句柄,然后再SW_HIDE它。
      

  3.   

    Option ExplicitPrivate Const WM_ENABLE = &HA
    Private Const WS_DISABLED = &H8000000
    Private Const GWL_STYLE = (-16)Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate hwndShellTray       As Long
    Private hwndStartButton     As Long
    Private nOldWndStyle        As Long
    Private nNewWndStyle        As LongPrivate Sub cmdDisable_Click()    nNewWndStyle = nOldWndStyle Or WS_DISABLED
        
        SetWindowLong hwndStartButton, GWL_STYLE, nNewWndStyleEnd SubPrivate Sub cmdRestore_Click()    SetWindowLong hwndStartButton, GWL_STYLE, nOldWndStyleEnd SubPrivate Sub Form_Load()    hwndShellTray = FindWindow("Shell_TrayWnd", vbNullString)
        hwndStartButton = FindWindowEx(hwndShellTray, ByVal 0&, "BUTTON", vbNullString)
        
        nOldWndStyle = GetWindowLong(hwndStartButton, GWL_STYLE)
        
    End SubPrivate Sub Form_Unload(Cancel As Integer)    SetWindowLong hwndStartButton, GWL_STYLE, nOldWndStyle
        
    End Sub
      

  4.   

    问题是按下<Win>键还是可以出现开始菜单的。
      

  5.   

    Ctrl+Esc和Win键有一样效果,是不是要屏蔽两个啊?
      

  6.   

    先找到它的句柄
             hwnds = FindWindow("Shell_TrayWnd", vbNullString)
        hwndSb= FindWindowEx(hwndShellTray, ByVal 0&, "BUTTON", vbNullString)
    然后,sendmessage(hwndsb,SHOW_HIDE,0,0)
      

  7.   

    QQ121907792
    如果你还是解决不了,那就加我,我在QQ上告诉你
      

  8.   

    WIN2000中屏蔽WIN键的方法:在模块中:
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    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 UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Type PKBDLLHOOKSTRUCT
        vkCode As Long
        scanCode As Long
        flags As Long
        time As Long
        dwExtraInfo As Long
    End TypePrivate Const HC_ACTION = 0
    Private Const WM_KEYDOWN = &H100
    Private Const WM_SYSKEYDOWN = &H104
    Private Const WM_KEYUP = &H101
    Private Const WM_SYSKEYUP = &H105
    Private Const VK_LWIN = &H5B
    Private Const VK_RWIN = &H5C
    Private Const WH_KEYBOARD_LL = 13Private PrevHook As Long
    Public Function LowLevelKeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Dim fEatKeystroke As Boolean
        Dim p As PKBDLLHOOKSTRUCT
        
        If ncode = HC_ACTION Then
            Select Case wParam
                Case WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP
                    CopyMemory p, ByVal lParam, Len(p)
                    If p.vkCode = VK_LWIN Or p.vkCode = VK_RWIN Then
                        fEatKeystroke = True
                    End If
                Case Else
                    'do nothing
            End Select
        End If
        
        If fEatKeystroke Then
            LowLevelKeyboardProc = 1
        Else
            CallNextHookEx WH_KEYBOARD_LL, ncode, wParam, lParam
        End If
    End Function
    Public Sub Hook()
        PrevHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
    End Sub
    Public Sub UnHook()
        UnhookWindowsHookEx PrevHook
    End Sub
    在窗体中:
    Private Form_Load()
        Hook()
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        UnHook()
    End Sub
      

  9.   

    在Win2000下,WH_KEYBOARD_LL就是全局的,试一下就知道了。