不知道还有多少老人还在了都有人记得我么?顺便问段代码
 
以前和寒江雪讨论过冻结winlogon使机器无法重启的代码还有人收藏着么

解决方案 »

  1.   

    调用:
    sub main()
        Call HookShutDown(Me.hwnd)
    sub
    标准模块:Public Const MAX_TOOLTIP As Integer = 64
    Public Const NIF_ICON = &H2
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_TIP = &H4
    Public Const NIM_ADD = &H0
    Public Const NIM_DELETE = &H2
    Public Const WM_MOUSEMOVE = &H200
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_LBUTTONDBLCLK = &H203
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_RBUTTONDBLCLK = &H206
    Public Const SW_RESTORE = 9
    Public Const SW_HIDE = 0
    Public nfIconData As NOTIFYICONDATAPublic Type NOTIFYICONDATA    cbSize           As Long
        hwnd             As Long
        uID              As Long
        uFlags           As Long
        uCallbackMessage As Long
        hIcon            As Long
        szTip            As String * MAX_TOOLTIP
    End TypePublic Declare Function ShowWindow _
                   Lib "user32" (ByVal hwnd As Long, _
                                 ByVal nCmdShow As Long) As LongPublic Declare Function Shell_NotifyIcon _
                   Lib "shell32.dll" _
                   Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, _
                                              lpData As NOTIFYICONDATA) As LongPrivate Const GWL_WNDPROC = (-4)
    Private Const WM_ENDSESSION = &H16
    Private Const WM_QUERYENDSESSION = &H11
    Private WndProc As LongPublic Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function CallWindowProc _
                    Lib "user32" _
                    Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
                                             ByVal hwnd As Long, _
                                             ByVal Msg As Long, _
                                             ByVal wParam As Long, _
                                             ByVal lParam As Long) As LongPrivate Declare Function SetWindowLong _
                    Lib "user32" _
                    Alias "SetWindowLongA" (ByVal hwnd As Long, _
                                            ByVal nIndex As Long, _
                                            ByVal dwNewLong As Long) As LongConst HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2Public Sub HookShutDown(ByVal hwnd As Long)    If WndProc = 0 Then
            WndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
        End IfEnd SubPublic Sub UnHookShutDown(ByVal hwnd As Long)    If WndProc <> 0 Then
            Call SetWindowLong(hwnd, GWL_WNDPROC, WndProc)
            WndProc = 0
        End IfEnd SubPrivate Function WindowProc(ByVal hw As Long, _
                                ByVal uMsg As Long, _
                                ByVal wParam As Long, _
                                ByVal lParam As Long) As Long    If uMsg = WM_QUERYENDSESSION Then
            WindowProc = False '为0
            Exit Function    ElseIf uMsg = WM_ENDSESSION Then
            WindowProc = False '为0
            Exit Function    End If    WindowProc = CallWindowProc(WndProc, hw, uMsg, wParam, lParam)
    End Function
      

  2.   

    [size=16px]接分~[/size]