说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关机消息的拦截 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
关机消息的拦截 -VB资料

在关机或Logff前信息的拦截

  如果我们关机或Logoff时,我们的程序有时会因而无法按正常程序结束,一般我们会在Form的Unload中一段程序结束时要做什么事,但是,如果使用者直接用开始功能菜单的关机,会使UnLoad的部份没有做到,我们现在就想办法来拦截关机(或Logoff)时的信息。

  一般来说,关机或Logff后,Windows会传依序送出WM_QUERYENDSESSION的信息给每个Process,如果中间有一个Process不能顺利结束(例如:Word修改后未存档,而出现是否存档,但我们按取消),这时该信息执行的结果会传回False(0),这时Windows也就不再继续送WM_QUERYENDSESSION给下一个Proccess。反之,如果所有的Process都可以顺利结束(也就是每个送出的WM_QUERYENDSESSION都传回True),那才代表以以顺利结束。

  不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送一个WM_ENDSESSION的信息给所有的Process,而wParam的内容便是指出是否可以顺利结束(True菜单可以,False菜单不行,在vb中则CheckwParam = 0 菜单False ,0菜单True),说到这里大概就知道该如何做啦,程序如下:
  
’以下在Form
Private Sub Form_Load()
 Dim ret As Long

 ’记录原来的Window Procedure的位址
 preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
 ’设定form的window Procedure到wndproc
 ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
End Sub
  
Private Sub Form_Unload(Cancel As Integer)
 Dim ret As Long
 Dim fno As Long

 ’取消Message的截取,而使之又只送往原来的Window Procedure
 ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)

 ’这里只是要看看用关机的方式结束程序时,会不会执行到这里
 fno = FreeFile
 Open "c:\tt2" For Append As fno
 Print #fno, "ccc" + vbCrLf
 Close #fno
End Sub
  
’以下在.Bas
Option Explicit
  
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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
  
Public Const GWL_WNDPROC = (-4)
Public Const WM_ENDSESSION = &H16
Public Const WM_QUERYENDSESSION = &H11
  
Public preWinProc As Long
  
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 ’代表将顺利关机或LogOff,这时便得做正常结束程序的操作
     Dim fno As Long
     Open "c:\ttt" For Output As #1
     Print #1, "hahcccc5"
     Close #1
   End If
  End If
 End If

 ’将之送往原来的Window Procedure
 wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
Google工程师谈程序员的自我修养 依然很强大:微软第一财季净利润同比增17% MDCC 2013垂直行业应用与O2O专题论坛透露劲爆话题 专访豌豆荚产品设计团队:Design Hackathon是绞尽脑汁之后的海阔天空 首日报名爆满超300 向C++大师Lippman提问征集 做华为合伙人:华为开发者联盟沙龙(北京站)即将开幕 Windows XP发行12周年 我仍年轻而你已垂暮 2013浏览器市场份额:Chrome领衔,Firefox、IE相去甚远 人人网陈弢:从RecSys2013看大数据和移动给推荐系统带来的挑战 继续紧逼Oracle:在占领谷歌等公司之后,MariaDB迈向企业端 移动周报:十款最实用的Android UI设计工具 阿里巴巴CTO王坚:开发者精神是云计算与移动互联网的“信仰” 黑客老鹰:安全软件同样需要用户体验 六届中国大数据技术大会PPT精粹(二) 专访百度蒋凡:从RecSys2013大会看推荐系统发展新趋势 Hike副总裁杜中强:携手阿里云OS,拥抱云时代 玩蟹科技CEO叶凯:手游和云计算的合作相得益彰 倒计时20天!金玩奖各大奖项花落谁家由你主宰 宅男程序员福利:来自纽约的28位智慧与美貌并存的IT女神 创季度记录:苹果发布第四季财报 iPhone仍是苹果商业心脏 在破晓中行走:一位盲人开发的盲人应用 腾讯云俱乐部成都站——云时代手游开发:用数据说话 首届微App峰会将在MDCC2013上举行 微信易信百度新浪等平台开发商云集 TUP Masters第七期:C++大师Lippman论编程新范式Hugo OpenCL用于13个微型计算机领域的经典案例 从测试数据来看Node.js和Java EE的性能区别 工作效率低下?业内人士建议你切勿追求完美 Mozilla发布可视化在线跟踪工具Lightbeam 望向海外:十大移动应用开发外包公司 Facebook支撑万亿Post搜索背后的技术窥探 云OS:共创智能化生态圈 灌水灌得差点忘了问问题~进来的有分。 一个有意思的小任务,诚征实现程序 我的2000因为WMI不能用了,谁能帮我,快!我在这等: 一个有意思的小任务,诚征实现程序 那位仁兄用过 installation system 请告诉我怎样设置才能使我的应用程序出现在“开始”菜单里 小弟急用 韩国队崛起大揭密:铁血作风 军人模式 地狱训练 vb中怎么动态生成按钮??? 请问:考中程怎样去复习,尤其是下午的题? java 的环境配置,请高手指教! 如何判断一个1024的int数组的所有元素的值全部小于50。寻求高速算法。 有谁看过Charles Petzold的《Programming Microsoft Windows with C# 》和Jeffrey Richter的《Applied Microsoft.NET Framework Programm 如何把图标加到 dll 文件中! 求助!!!哪儿能下载到VB高级编程的详细参考资料? 如何得到光标在编辑框中的位置?一个笨笨的问题 请教select函数用法!!!!! 关于日期计算的的错误!请关注!! 韩国人踢进八强 和 中国人相互掐架(转帖) vb中怎么动态生成按钮 如何修改Internet option/home page中的address CSDN如何上传文件啊? 请教c++的问题 滴水之恩,涌泉相报!!! REALPLAY不出声音 我想考scjp,不知道那个证有没有用? 哪儿有这样的软件? 电脑游戏与电子游戏 哪位有CRC-CCITT的表格,计算法就不必了 电子游戏与电脑游戏 如何用ASE12.5构建ODBC数据源并用ASP连接调用它? 关于c#版csdn助手的数据连接问题 有没有点击表头排序的listview控件? 我不会了(EDIT BOX问题),在线等 Delphi 用VB做数据库,同时保证远程SQL SERVER和本地ACCEE的同时更新,当远程连接不通时应该怎样做才能在本地顺利运行,而网络通畅时又能保证数 fopen与_open什么区别? 谁能推荐一个专注于编程、高手林立的的linux论坛? 指针???????? 请教在座各位sql server高手一个关于bcp命令的问题 奇怪的多线程与CListCtrl的问题! 特急!~~~!!寻求帮助! 请问vb里面用菜单编辑器作的菜单,怎么加图标啊? 男女关系的33个妙喻(转) 那位高手知道怎样绑定data grid 和 sql server 中的表 急 關於Ultra Edit編輯Java try! 有用C#做数据库编程的朋友给点经验 wonderful ASP 请问,知道对方IP地址(对方是98 有共亨之类的)如何能读写的对方的文件 关于ram、rm文件: 请问各位大虾,两个日期相减应该怎么做呀?比如2002年6月20日减去2001年10月15日 还很奇怪:我的笔记本的网卡物理地址(physical address)是:00-00-00-00-00-00 有一根木料,把它截成5段,需要5分之2小时,如果每截一次所用的时间相同,那么截成8段,共需多少小时? 面额为100元的人民币为什么有一张右边有编码! 而另一张没有? 借物喻人的作文 要写一件事啊 将一根木料锯成5段,用了0.2小时,如果要把这根木料锯成8段需要多少小时 新坛新秀林虹品德高尚,演技精湛,荣获了"世家青年歌手"的光荣称号.修改病句【急 借物喻人的作文有关牛的 一根木料长2米,分成每分长0·5米的要90分钟.如果要分成每分40厘米的小段要多少分钟天天天天天天天 修改病句(急)张兵老师当上了我市2005年“十佳青年教师”的荣誉称号. 勾股定理的一道题 围绕“寻找身边的吴老师”主题自由命题,以记叙文为主1000字 改病句“这场演出歌星云集 杯子里放牛奶 什么意思啊 一件工作甲单独做要30天完成,乙单独做要40天完成.先由甲做了若干天后,由乙接着做,从开始到完工共用35天.这件工作有甲乙各做了几天? 修改病句 找病句下面没有病句的是:A.黄果树瀑布以豪迈而粗犷、雄浑而瑰丽的特点著称于世,真算得上瀑布中的伟丈夫!B.大连市委对镇协工作的领导落到实处,充分发挥了个民主党派参政、 杯子里有许多牛奶.用英语咋说 四书五经指的是什么? 畅想世博征文城市让生活更美好尽量简短,400字左右 ,最好是自己写de 简短简短简短简短! 发送电子邮件邀请Tony去看电影的英语作文 现在就要 如果好我再给财富值不用太长 求,450字+,分大大的 一本笔记本的价钱是y元,比一个文具盒的价钱的三倍少28元,用式子表示,文具盒的价钱为【 】. 有趣的汉字作文1000字 四书五经分别指的是什么? 用含有字母的式子表示学校买笔记本和铅笔盒共花多少元钱. 有趣的汉字作文太深奥了我不懂,老师也不懂滴~ 奇幻的梦作文怎么写? 一件工作,甲12天完成,乙18天完成,现在甲做诺天后,乙再做剩下的,这样一共用了16天,甲先天做了多少天? 借物喻人的作文怎么写? 鲁迅的文章,在文章中鲁迅先生梦见鬼了,哪是他写的哪个文章呀 小红在商店买了a个水杯和b个文具盒,一共用去c元,每个水杯售价是d元.(1)用含有字母的式子表达每个文具盒的售价.(2)如果a=4,b=8,c=40,d=4.8,求每个文具盒的售价是多少钱? 疯狂猜图:左上角是红色,右下角蓝色并带有白花是猜品牌,2个字 速求一篇演讲稿题目是 我有一个梦想 快, 商店进了300个文具盒,每售出一个文具盒,可获利40%,当售出这批文具盒的5/6时,共获利750元,求每个文具盒的进价? 这位歌手想开展一次演唱会,修改病句 急求:以“我有一个梦想”为题的演讲词字数300~400之间贴近生活实际(最好有互动答得好有追加分数. 要抓紧时间) 江苏省征文 寻找身边的吴老师 谁能给我一个关于吴老师的介绍的?吴老师到底叫什么名字?他有什么事迹? “我们热烈响应‘学十佳’”这病句怎么改? 中性水笔芯不出水了怎么办晨光0.3超细的那种,买了好多支呢,总是不出水,甩也不管用,可是我不想扔,很贵的,怎么办啊55555~ 桑乐太阳能怎么样 他获得了“十佳主持人”.(修改病句)急啊 一根木料长5分之3米 ,用去了它的6分之1,用去了多少米?还剩下多少米? 有谁知道桑乐太阳能质量怎么样.价格之类呢 一盒1.25千克的牛奶,把它分装在大小一样的杯子里,每个杯子最多盛240克,至少需要几个 一根木料用去百分之40,剩4.5米,原来这根木料长多少米? 如何写借物喻人的文章 一瓶饮料1.25千克,把它装在一样大的杯子里,每个杯子最多盛 240克至少需要多少个杯子才能盛完 一根木料用去30%后还剩下1.4米,这根木料长几米 借物喻人的文章怎么写? 小明买了一本童话书,每两页文字之间有三页插图,也就是说3页插图前后各有1页文字.如果这本书有128页,而第一页是文字,这本童话书共有插图多少页?算式! 怎麽把布袋文具盒上的笔芯洗掉回答要好哟 借物喻人的作文怎么写 一本童话书,每两页之间有3页插图,即3页插图的前后各有一页文字.如果这本书有129页,而第一页是文字,这 妈妈今年年龄是可可的5倍,3年后妈妈的年龄比可可的3倍大6岁,可可今年几岁,用方程来解. 借物喻人作文怎么写? 一本童话书,每两页文字之间有1页彩色插图,如果这本书有130页,第一页是文字,这本童话书共有多少页彩色插图? 我的理想500字左右~~请快~~~~(>_ 为什么100元人民币右边印着蓝色的号码,而且是竖向的,跟左边的号码一样的,为什么啊 借物喻人的作文牛 怎样写 我的理想 文章最好500字左右 文章最好 有张99年版的100元人民币 右侧也有蓝色编码,但是没有类似条形码的东西 左侧编码是全黑色 是假币么反面100后也没有yuan 找一篇500字的借物喻人的作文,写牛或榴莲的!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘