动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息

本月文章推荐
.回文数的形成.
.C++ Builder 初学问与答(四).
.动态汉化Windows技术的分析.
.C++编译器如何实现异常处理(1).
.C++习题与解析(类和对象-07).
.任意形状的窗体.
.Windows Sockets:字节排序.
.任务条状态区的应用.
.c++学习计划.
.交叉编译.
.VC实现系统热键激活后台服务程序.
.C语言程序设计基础之预处理.
.C语言图形编程(四、图形文本-01).
.C语言字符型数据.
.新手入门:C++中堆内存(heap)的概.
.经典c程序100例==21--30.
.VC快捷键大全.
.简单的画笔.
.实例解析C++/CLI之代理与事件.
.判断windows的Desktop及其它目录.

如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?

发表日期:2008-3-8 |


对于windows form的应用程序, 操作系统其实在注销或者关闭的时候,会发一个WM_QueryEndSession的消息给每一个窗体,每一个窗体有一个表决的机会,返回是否退出.这个跟form 的closing 时间一样. 一旦有一个程序返回false,那么这个注销动作就取消了.默认.net 写的windows 应用程序都是表决true,就是系统注销的时候,程序自动退出.


所以你要相应系统注销这个消息, 比如提醒用户要不要退出,或者作一些记录log的操作, 在.net 中只要挂一个事件处理到Microsoft.Win32.SystemEvents.SessionEnding 这个事件上面去.你可以做一些自定义的操作.比如:

如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图一)private void HookSessionEnding()
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图二)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图三)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图四){
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)Microsoft.Win32.SystemEvents.SessionEnding +=
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)new Microsoft.Win32.SessionEndingEventHandler(this.OnSessionEnding);
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图六)}
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图一)private void OnSessionEnding( object sender,
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图一)Microsoft.Win32.SessionEndingEventArgs e )
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图二)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图三)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图四){
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)    // the user session is ending
        //MessageBox...
        //取消系统关闭 e.cancel=true
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图六)}

 当然也可以重载消息处理,自己处理WM_QueryEndSession 这个消息.

对于控制台应用程序,一般只能做到被动的接受,可以记录一下什么时候程序被关掉,是应为什么原因

实现方式其实就是调用系统api,有一些 SetConsole 打头的函数,用来实现 控制台应用程序的自定义,比如设置字体,颜色,窗体大小子类的. 2005 中其实对这些api做了一些包装. 这里主要是利用 SetConsoleCtrlHandler ,注册一个Handler

一下是vb.net 的一个框架

如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图二)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图三)Module Module1Module Module1 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图七)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图八)    Public Declare Function SetConsoleCtrlHandler()Function SetConsoleCtrlHandler Lib "kernel32.dll" Alias "SetConsoleCtrlHandler" (ByVal handlerRoutine As HandlerRoutine, ByVal add As Boolean) As Boolean 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图七)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图八)    Public Delegate Sub HandlerRoutine()Sub HandlerRoutine(ByVal type As Integer) 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图七)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图八)    Sub Main()Sub Main()
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        SetConsoleCtrlHandler(AddressOf MyHandle, True) 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        Console.ReadLine() 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图九)    End Sub
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图七)如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图八)    Public Sub MyHandle()Sub MyHandle(ByVal type As Integer) 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 控制台收到那些消息 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 0- CTL C 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 1- CTL + Break 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 2- CLOSE,可能是通过关闭close按钮也可能是直接关闭进程 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 3- 操作系统要注销 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        ' 4- 系统要关机 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)        'Add Your Log 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图九)    End Sub 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图五)
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图六)End Module 
如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息?(图一)


3.对于windows 服务,api的话采取的是跟 console 类似的处理方式.只不过的他的状态切换更多
主要是调用一个 RegisterServiceCtrlHandler 的api

上一篇:在VBA中调用AUTOCAD打印文件 人气:470
下一篇:Web中DataGrid绑定数据显示列可拖动 人气:358
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成