再formclosequery中写代码:
CanClose:=false
就关闭不了该程序,除非结束进程

解决方案 »

  1.   

    高级指南:
        TForm 的两个事件
        1.OnCloseQuery:
          将 CanClose 置为False,则不关;
        2.OnClose:
          可以设置 Action 为 caNone, caHide, caFree, caMinimize 
          其中的一个;
      

  2.   

    具体是:EnableMenuItem(GetSystemMenu(Handle, FALSE), 
                   SC_CLOSE, MF_BYCOMMAND or MF_GRAYED)
      

  3.   

    OnClose中只需不等于CAFREE就行,常用CANONE的
      

  4.   

    在Onclose中,用showmessage等显示提示信息,告诉用户任务未完成并调用Abort函数返回程序!!!
      

  5.   

    改正,应用messagedlg来让用户来确认是否要关闭
      

  6.   

    在Private中加上
    Procedure WMClose(Var Msg:TMessage);Message WM_Close;
    Procedure WMQuit(Var Msg:TMessage);Message WM_Quit;
    接管消息。做出空反应。(废话吗,就是不做反应)
    谁都结束不了。
    喔,应当对WM_QueryEndSession作出反应
    Procedure WMQueryEndSession(Var Msg:TMessage);Message WM_QueryEndSession;
    在它的对应事件里写Msg:=0;
    拒绝关机什么,结束进程?
    程序应该这样写,
    很多关键地方都有标号,标志程序运行到哪儿
    有一个全局变量记录运行到了哪儿,运行完关键部分,
    就将恢复程序运行所需的变量,和这个全局变量写进注册表,登记新的全局变量,
    再次启动这程序,就可从头部跳转及时恢复。
    如果你的程序要实现不让别人关闭,可以这样的死皮赖脸:
    启动时自动启动一个附程序,这两个程序都要建立一互斥对象,以便检查,而不要反复启动引起系统崩溃。好现在就可以假设,你的程序有过检查到再内存中已有了,就不再运行。
    那么附程序有什么用哪?两个程序都开计时器,向指定的不同环境变量写系统时间,并检查对方书写的系统时间,如果误差太大就从磁盘启动对方程序。即使对方用杀灭进程的方法,也杀不灭你。
    当然,附程序要最好什么资源都没有,什么窗口都没有,让别人无法找到它的Handle,就更别说ProcessHandle和ThreadHandle了。
    好象这样一写,变成无赖程序了。