如何打开一个应用程序,并且判断打开的这个应用程序是否正在运行?

解决方案 »

  1.   

    {确保只有一个运行程序}
    function StartExe(S:string):boolean;
    var aHandle: tHandle;
        P:array[0..79]of char;
    begin
      result:=true;
      strpcopy(p,s);
      aHandle:=FindWindow(pchar('tapplication'),p);
      if ahandle<>0 then
      begin
        SetForegroundWindow(ahandle);
        setactivewindow(ahandle);
        if isiconic(ahandle) then
          showwindow(ahandle,sw_restore);
        result:=false;
      end;
    end;
    begin
      if startExe('进销存管理系统') then begin
        Application.Initialize;
        Application.Title :='进销存管理系统';
        Application.CreateForm(TMainFm, MainFm);
      Application.CreateForm(TDm, Dm);
      Application.CreateForm(TModiStockQyFm, ModiStockQyFm);
      Application.CreateForm(TBackFactoryQyFm, BackFactoryQyFm);
      Application.CreateForm(TBackFactoryOutFm, BackFactoryOutFm);
      dm.ShopCon.Connected := True;
      Application.Run;
    end;在program中加入如上代码.
      

  2.   

    要限制仅能运行一个的话,在Application.Initialize前面
    用CreateMutex这个API函数创建互斥变量并进行判断