如何阻止windows关机?

来源:互联网 发布:一级已备案域名购买 编辑:程序博客网 时间:2024/04/29 04:54

如何阻止windows关机? 

'mStopShutDown.bas
模块代码:

Private Const GWL_WNDPROC = (-4)
Private Const WM_ENDSESSION = &H16
Private Const WM_QUERYENDSESSION = &H11

Private WndProc As Long

Private 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

Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long,

ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Sub HookShutDown(ByVal hWnd As Long)
    If WndProc = 0 Then
       WndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
    End If
End Sub

Public Sub UnHookShutDown(ByVal hWnd As Long)
    If WndProc <> 0 Then
       Call SetWindowLong(hWnd, GWL_WNDPROC, WndProc)
       WndProc = 0
    End If
End Sub

Private 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


主窗体代码:

Private Sub Form_Load()
    Call HookShutDown(Me.hWnd)
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Call UnHookShutDown(Me.hWnd)
End Sub

原创粉丝点击