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

  • 相关阅读:
    s-hr实现单点登录,看我这份笔记就够了!!!
    S-HR类加载器的区别
    S-HR常用源码
    nginx安装配置参考
    make && make install
    Centos7提示Initial setup of CentOS Linux 7 (core)
    LinkedList的线程安全解决办法
    【开发笔记】- git回退版本: 回退本地代码版本 + 回退服务器代码版本
    【数据结构】- Java字节序、主机字节序和网络字节序扫盲贴
    【开发笔记】
  • 原文地址:https://www.cnblogs.com/findumars/p/6311432.html
Copyright © 2011-2022 走看看