如题

解决方案 »

  1.   

    就是单实例运行的问题,运行时如果程序已经运行则自动退出。
     var
     fAtom : TAtom;//控制单实例。procedure TForm1.FormCreate(Sender: TObject);
     if GlobalFindAtom('PROGRAM_RUNNING') = 0 then    
       { If not found then add it }    fAtom := GlobalAddAtom('PROGRAM_RUNNING')
        else
          begin
            MessageDlg('程序正在运行!',mtWarning, [mbOK], 0);  //如果程序已经在运行,则提示并终止新实例。
            Halt;
          end;
    end;
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    GlobalDeleteAtom(fAtom);
    end;
      

  2.   

    楼上的是所答非所问。问题的解决办法是:通过GetForegroundWindow取得当前活动窗体,然后由句柄转为进程名,最后比较进程名是否跟application.ExeName相等。如果相当,则说明你的程序中的某个窗口是当前窗口。
      

  3.   

    两位都不对。我原来的想法是:
       程序在运行中;此时如果需要修改密码,则SHOW出密码修改FORM,但是在密码修改FORM SHOW出时,希望用户关闭其他所有打开的窗体,因为密码修改完,程序将关闭。
    这就是我的思路