对于同一个EXE文件,在同一操作系统中我已经控制住只能运行一个,目前已经实现,现在的问题:
由于该程序是一个服务程序,我需要在该程序遇到问题时自动重启动该程序(关闭旧的),这个时
候由于唯一性的问题导致不能重新运行新的,出错时我的处理是:
Application.terminate;
ShellExecute(0,'open',Pchar(ExtractFileName(Application.ExeName)),nil,nil,SW_SHOW);
如果去掉唯一性的限制,那么这个功能可以很容易实现,但在保证唯一性判断的前提下,有么有办法实现?

解决方案 »

  1.   

    你可以通过ShellExecute(0,'open',Pchar(ExtractFileName(Application.ExeName)),nil,nil,SW_SHOW); 传命令行参数,告诉程序要重启程序启动时先判断命令行参数,如果是重启命令,就不执行唯一性了
      

  2.   

    ShellExecute(0,'open',Pchar(ExtractFileName(Application.ExeName)),'参数1 参数2 参数3',nil,SW_SHOW)程序启动访问时用ParamStr(index),访问,ParamStr(0)为程序名,然后顺序的就是你传入的参数
      

  3.   

    启动程序:ShellExecute(0,'open',Pchar(ExtractFileName(Application.ExeName)),'reboot',nil,SW_SHOW) 在工程文件中判断
      Application.Initialize;
      if ParamStr(1) = 'reboot' then
      begin
        //不判断唯一性代码
      end
      else
      begin
        //判断唯一性代码
      end;
      Application.CreateForm(TForm1, Form1);
      Application.Run;