用全局原子就OK。<br>参考下面的这段话:<br>我们也可以利用向系统添加全局原子的方法,来防止多个程序实例的运行。全局原子由Windows 系统负责维持,它能保证其中的每个原子都是唯一的,管理其引用计数,并且当该全局原子的引用计数为0时,从内存中清除。我们用GlobalAddAtom 函数向全局原子添加一个255个字节以内的字符串,用GlobalFindAtom来检查是否已经存在该全局原子,最后在程序结束时用GlobalDeleteAtom函数删除添加的全局原子。示例如下: <br><br>Uses Windows <br>const iAtom=‘SingleApp’; <br>begin <br> if GlobalFindAtom(iAtom)=0 then <br> begin <br> GlobalAddAtom(iAtom); <br> Application.Initialize; <br> Application.CreateForm(TForm1,Form1); <br> Application.Run; <br> GlobalDeleteAtom(GlobalFindAtom(iAtom)); <br> end else <br> MessageBox(0,'已有一个实例运行!','',mb_OK); <br>end;<br><br>利用全局原子的引用计数规则,我们还可以判断当前共运行了该程序的多少个实例: <br><br>var i:Integer; <br>begin <br> I:=0; <br> while GlobalFindAtom(iAtom)<>0 do <br> begin <br> GlobalDeleteAtom(GlobalFindAtom(iAtom)); <br> i:=i+1; <br> end; <br> ShowMessage(IntToStr(I)); <br>end;