CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

使用HOOK控制机器关机的问题.

楼主alex_fan(alex.fan)2004-09-01 15:57:03 在 VB / 基础类 提问

 
   
  我想做一个小工具,   在关机器的时候自动的备份.  
   
  我是这么做的.  
   
  一个窗口的工程,   做托盘,   在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

相关问题

  • 能否控制局域网中机器的开关机?
  • 高分求救——在网络中主机如何控制其他机器的开机关机?急!急!急!
  • 机器关机故障!急!!!
  • 有关机器码的问题
  • 远程控制关机的问题!!
  • 如何检测网络中某台机器是关机状态?
  • 如何让程序知道现在机器关机了呢?
  • c++关机,怎么关LAN中的机器。
  • 怎样在程序中区分机器重启还是关机?
  • 如何用程序控制关机或重启?

关键词

  • 消息
  • 关机
  • 备份
  • windowproc
  • umsg
  • 时候
  • 设计
  • byval
  • 捕捉到消息
  • as long

得分解答快速导航

  • 帖主:alex_fan
  • bluesky23
  • imur05
  • rainstormmaster
  • sssss342072
  • haiz_2001
  • gxsun
  • captainivy
  • haohaohappy
  • luoshulin

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo