写了个禁止关闭计算机的模块(原创:唐细刚 2005-5-29)
2005-05-29 15:39
309 查看
CSDN上看到这个问题,顺便写了个模块,方便大家调用:
http://community.csdn.net/Expert/topic/4041/4041955.xml?temp=.7912561
'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
本文已经被其他的网站引用,比如:
http://www.i0562.com/default.asp?cat=3
请保留我的原创说明.
http://community.csdn.net/Expert/topic/4041/4041955.xml?temp=.7912561
主 题: | 如何阻止windows关机? |
模块代码:
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
本文已经被其他的网站引用,比如:
http://www.i0562.com/default.asp?cat=3
请保留我的原创说明.
相关文章推荐
- 写了个禁止关闭计算机的模块(原创:唐细刚 2005-5-29)
- 锁定计算机绝对禁止关闭计算机
- 关闭计算机模块
- 如何禁止别人关闭计算机(转载)
- vb关闭计算机的模块
- 【原创】彻底关闭stormliv.exe进程 禁止stormliv再启动;3DMAX的服务设置里禁止adskscsrv.exe进程
- PowerShell2.0之桌面计算机维护(八)关闭或重启远程计算机
- [原创] 程序员面试宝典:第十八章 计算机网络及分布式系统
- Delphi中如何禁止某窗口被关闭的
- 如何关闭计算机中的嘀嘀声
- win10 计算机内存不足 请保存文件关闭这些程序
- linux指令之远程关闭计算机
- DOS命令关闭计算机
- 坑爹的“模块计算机类型“x64”与目标计算机类型“X86”冲突”
- VS2012:模块计算机类型“x64”与目标计算机类型“X86”冲突
- Apache禁止解析php---模块
- 【原创】python 使用系统模块…
- Oracle错误:动态执行表不可访问,本会话自动统计被禁止,关闭自动统计之后的问题
- [原创]禁用Windows Server 2003关闭事件跟踪程序
- 【原创】flex中tree的展开与关闭