我的程序需要拦截windows的关机事件,在即将关机前将一个小文件用ftp方式上传到某个服务器,上传完成后不能影响windows的关机,系统为windows xp,下面是我的关键部分的代码:Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_QUERYENDSESSION Then
Debug.Print "QryEnd", wParam, lParam
Else
If Msg = WM_ENDSESSION Then
If wParam 0 Then
该处是我上传文件的代码
End If
End If
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function经测试,上传文件部分没有问题,也可以成功拦截到WM_ENDSESSION消息,但是编译运行后,关机后服务器上并没有我上传的文件。
我自己分析认为:可能是当程序拦截到WM_ENDSESSION这个消息时,系统的很多服务已经关闭,包括ftp,所以才没有上传成功。
1、我的分析是正确的吗?
2、如果我的分析是正确的,那么把上传文件放在拦截到WM_QUERYENDSESSION消息后行不行呢?
3、如果也不行,该如何实现我的功能呢?
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_QUERYENDSESSION Then
Debug.Print "QryEnd", wParam, lParam
Else
If Msg = WM_ENDSESSION Then
If wParam 0 Then
该处是我上传文件的代码
End If
End If
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function经测试,上传文件部分没有问题,也可以成功拦截到WM_ENDSESSION消息,但是编译运行后,关机后服务器上并没有我上传的文件。
我自己分析认为:可能是当程序拦截到WM_ENDSESSION这个消息时,系统的很多服务已经关闭,包括ftp,所以才没有上传成功。
1、我的分析是正确的吗?
2、如果我的分析是正确的,那么把上传文件放在拦截到WM_QUERYENDSESSION消息后行不行呢?
3、如果也不行,该如何实现我的功能呢?
解决方案 »
- 控制键盘操作
- 对于长时间处理的程序VB界面给人感觉就像僵死状态
- 请教各位大侠:如何使水晶报表8.5不出现预览窗口而直接打印?
- 如何取出文本框的第二行?
- 有谁知道VB的帮助文件是怎样作的?好像是通过WORD做成.chm,然后再做转换?
- 如何进入form,设置英文输入方式?
- SQL中的Update语句
- 怎么缩放图片?把图片放大,或缩小?散分!!!!!!!
- 我只想设置程序中使用的WEBBROWSER控件的代理,不想更改机器中IE的设置。如何实现?谢谢。
- 请教各位大虾,使用winsock UDP 时如何判断SendData失败
- 看看有什么错误?谢谢
- csdn最近怎么了,或者不能登录,或者速度慢,或者超时!顺便问个wininet的问题
我认为可能是因为妳的上传文件的代码是异步的,只是发出了调用,但没有阻塞等待它完成
而后的
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
并没有拦截结束SESSION消息,程序没来得及上传文件就直接退出了