用进程互斥 FindWindow ATOM
请问你要那一个

解决方案 »

  1.   

    var
      hwndsbsz:hwnd;
    begin
      hwndsbsz:=findwindow(nil,pchar(''); //引号中为另一应用程序的Application.Title,
    即该程序运行时在任务栏上的名称  if hwndsbsz <> 0  then
          application.MessageBox('模块正在运行中!','提示',mb_ok);
    end; 
      

  2.   

    在项目文件中加入Windows单元。然后写代码如下:
    CreateMutex(nil,False,'字符串');
    if GetLastError=Already_Exists then begin
      Halt(0);
    end;
    Application.Initialize;
    .......................
    Application.Run
      

  3.   

    感觉用FindWindow不太好,因为如果另外有一个应用程序使用了同样的Title怎么办?
    用CreateMutex会较好,它的参数值不依赖于界面元素;我一般会生成一个GUID来填充第三个参数,这样一般就不会与其它应用程序具有相同的特征了。
    用Atom也挺好,不过我没亲自试过。
      

  4.   

    To:Tangyisichuan
    你的代码忘了释放建立的Mutex。
      

  5.   

    在《delphi5开发人员指南》里面有一个例子讲得较详细的,直接把那个单元用在自己的程序就可以了!