如何阻止windows关机?
2006-02-20 10:06
423 查看
如何阻止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
'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
相关文章推荐
- Windows 2000下如何在自己的程序中实现关机!
- 在C#中如何调用windows的API进行关机操作!!!
- 如何解决“cmd.exe被禁用 提示“由于一个软件限制策略的阻止,Windows无法打开此程序 ”
- Windows 2000 server如何利用命令关机重启
- Windows 2000下如何在自己的程序中实现关机!
- 深入windows的关机消息截获-从XP到Win7的变化(在XP中程序可以阻止关机,但是在Win7中程序无法阻止关机,可Block的时间从1秒调到了5秒) good
- C++, Qt Windows关机的时候,阻止其关机或这注销 做其它业务的解决方法
- C#如何捕获windows关机事件
- 如何找出阻止windows睡眠的原因或软件
- 如何向windows投递暂停关机消息
- Windows 2000下如何在自己的程序中实现关机!
- Windows关机或重启显示有程序正在阻止、程序失去响应
- 桌面程序阻止Windows关机(使用Message.Result取得DefWindowProc API函数的返回值,非常重要)
- Windows 8中弹出窗口阻止程序如何设置例外站点
- 【Cool】如何使wince下的Windows文件夹下保存数据而掉电也不消失——这个能解决cab包安装重启/关机丢失的问题
- 在C#中如何调用windows的API进行关机操作!!! [转]
- Windows 2000下如何在自己的程序中实现关机!
- Windows 2000下如何在自己的程序中实现关机!
- Windows 7下阻止系统关机 分类: windows驱动程序WDM 2014-04-29 14:43 562人阅读 评论(1) 收藏
- MFC: 获得关机消息;阻止Windows关机