发送 关机消息
然后主窗口拒绝关机
这样在运行得所有应用程序全部都退出来了
        求高手帮忙写哈代码! 小弟弄很久都没弄出来! 哎! 

解决方案 »

  1.   

    可以写一个service应用程序,有system权限,在登陆windows之前就已经开始运行,而且即使用户注销了也还在运行,
    在程序中一直监视你要关的其他应用程序或进程,如果它们全都结束了,
    就用winexec('shutdown -a',SW_HIDE)指令,可以实现停止关机。
    不知道可行不可行,你可以试试。
      

  2.   

    當用戶向windows發出關機命令時,對所有應用程序先后會產生WM_QueryEndSession,WM_EndSession消息,所以你可以  private
        { Private declarations }
        procedure WMQuerySession(var msg: TWMQueryEndSession); message WM_QueryEndSession;
    ...procedure TForm1.WMQuerySession(var msg: TWMQueryEndSession);
    begin
      //這里你自己加條件判斷是否關閉
      msg.Result:=0;//表示不關閉應用程序
    end;由于windows os會根據所獲得的應用程序列表來逐一發送上述消息,因此,我們無法阻止windows os去關閉其他的應用程序,只能控制自己的應用程序不被關閉,或許可以hook此消息來解決。
      

  3.   

    上面所說的“其他應用程序”是指 在windows os應用程序列表中,自己的應用程序的前面的所有程序
      

  4.   

    提权DEBUG,然后……自己看着办,HOOK消息较为简单
      

  5.   

    窗体的WMQuerySession事件中 result:=0。就可以把WM_QueryEndSession截下。其他收到消息的程序会关闭。但这种办法不一定可以关闭所有除自己外的程序。此方法可以用来pass一部分网吧计费工具,以及一部分杀软。