使用HOOK控制机器关机的问题.
我想做一个小工具, 在关机器的时候自动的备份.
我是这么做的.
一个窗口的工程, 做托盘, 在FORMLOAD的时候隐藏窗体.
做HOOK, 当捕捉到消息WM_QUERYENDSESSION时候进行备份.
-------------------------------------------------------
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
Call beginBak
WindowProc = 1
Else
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End If
End Function
-------------------------------------------------------
出情况了. 备份的文件比较大, COPY比较费时, 系统弹出 窗口关闭无响应对话框.
设计处理1:
在捕捉到消息时候, 先生成一个线程来备份, 消息捕捉函数迅速返回0, 阻止关机, 在备份完后进行关机.
设计破定:
有可能是系统重起, 你每次都关机如何是好.
失败:
启动线程时候出错, 代码在按钮响应里没有问题,但是在这里不行.
--------------------------------------------------------
设计处理2:
在捕捉到消息时候, SHELL生成一个进程来备份, 消息捕捉函数迅速返回0, 阻止关机, 然后关闭监视程序, 在备份完后由备份程序进行关机.
设计破定:
有可能是系统重起, 你每次都关机如何是好.
失败:
SHELL调用没有任何效果, 代码在按钮响应里没有问题,但是在这里不行.
--------------------------------------------------------
设计处理3:
建一个类, 自定义一个事件
在捕捉到消息时候, 触发事件来备份, 消息捕捉函数迅速返回0, 阻止关机, 在备份完后由备份程序进行关机.
设计破定:
有可能是系统重起, 你每次都关机如何是好.
失败:
捕捉函数等到事件响应函数执行完才返回.
--------------------------------------------------------
如何是好, 等待指点ING
问题点数:100、回复次数:10Top
1 楼bluesky23(乐天_正在开发右半脑。。。^_^)回复于 2004-09-01 17:04:30 得分 12
UPTop
2 楼imur05()回复于 2004-09-02 11:47:19 得分 11
牛人Top
3 楼rainstormmaster(暴风雨 v2.0)回复于 2004-09-02 12:54:02 得分 11
//设计破定:
有可能是系统重起, 你每次都关机如何是好.
呵呵,你进行消息插队就行了,即:
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
Call beginBak
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
Else
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End If
End FunctionTop
4 楼sssss342072(乘凉的狙击手(~@ @~))回复于 2004-09-02 13:02:20 得分 11
接分,差几分就4个内裤了Top
5 楼haiz_2001(海啸)回复于 2004-09-02 13:18:40 得分 11
NXTop
6 楼gxsun(小毛猪)回复于 2004-09-02 14:48:15 得分 11
4个内裤要多少分?Top
7 楼captainivy(Ivy)回复于 2004-09-03 09:25:02 得分 11
好象要1000分Top
8 楼alex_fan(alex.fan)回复于 2004-10-07 15:43:59 得分 0
算了, 散了.Top
9 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2004-10-07 17:17:46 得分 11
upTop
10 楼luoshulin(草莽)回复于 2004-10-08 14:09:58 得分 11
赫赫
Top




