zoukankan      html  css  js  c++  java
  • 桌面程序阻止Windows关机(使用Message.Result取得DefWindowProc API函数的返回值,非常重要)

    Windows Client 客户端在关机,不外乎两种情况:

    1. 没有处理 Windows 关机消息;

    2.处理了关机消息,但是超时了;

    上面这两种情况,都会让Windows 关不了机。在现实生活中,这个情况的出现,让用户很头疼!

    一般出现上面这种情况,要对代码的分析,一定要对消息分发,消息处理的地方进行重点对待。对于Delphi 程序,很多事通过

    Var 

     aHande:THandle;

    begin

     aHande:=AllocateHWnd(WndProc);

    end;

    传入 WndProc 过程,如WndProc的原型:  procedure WndProc(var Message: TMessage);  在 WndProc 中一定要注意了,对于

    自定义的消息处理外,必须的处理Windows的其他消息。

    一般的书写方式为:

    procedure WndProc(var Message: TMessage);

    begin

       if Message.Msg=WM_Reply then //WM_Reply 为自定义消息
        begin
         { WMReply(Message);  这里是对自定义消息的处理}
        end
       else
        begin

             {注意 下面这句话,非常重要,直接调用Window单元 DefWindowProc 进行处理,并且还要指定  Message.Result

            很多代码 是调用   Dispatch(Message);   这样写没有错,在VCL里面,它最终调用 Window单元的                       DefWindowProc,  但是有可能超时,会导致Windows没有收到关机确认消息,而被阻止,不能正常退出。}

             Message.Result :=DefWindowProc(Fhandle,Message.Msg, Message.WParam,Message.LParam);

        end;

    end;

    http://blog.csdn.net/tjb_1216/article/details/5664116

  • 相关阅读:
    iview表单验证 只能输入小数或者整数
    iView之Modal(一级弹窗和二级弹窗)
    Vue+iView 引入iconfont
    iView爬坑记——表单验证
    有关使用 iview 表单验证的问题
    数据结构
    数学
    Zookeeper
    maven 打包
    区块链
  • 原文地址:https://www.cnblogs.com/findumars/p/6311432.html
Copyright © 2011-2022 走看看