delphi 只运行一个程序

来源:互联网 发布:防火墙如何开启403端口 编辑:程序博客网 时间:2024/05/02 01:14
举个例子  
  让程序只运行一个实例(Delphi篇)  
  -------------------------------------------  
  全局原子法     
    
         可以利用向系统添加全局原子的方法,来防止多个程序实例的运行。全局原子由Windows   系统负责维持,它能保证其中的每个原子都是唯一的,管理其引用计数,并且当该全局原子的引用计数为0时,从内存中清除。我们用GlobalAddAtom   函数向全局原子添加一个255个字节以内的字符串,用GlobalFindAtom来检查是否已经存在该全局原子,最后在程序结束时用GlobalDeleteAtom函数删除添加的全局原子。示例如下:    
    Uses   Windows    
    const   iAtom=‘SingleApp’;    
    begin    
       if   GlobalFindAtom(iAtom)=0   then    
       begin    
       GlobalAddAtom(iAtom);    
       Application.Initialize;    
       Application.CreateForm(TForm1,Form1);    
       Application.Run;    
       GlobalDeleteAtom(GlobalFindAtom(iAtom));    
       end    
       else    
       MessageBox(0,‘You   can   not   run   a   second   copy   of   this   App’,‘’,mb_OK);    
    end.    
    利用全局原子的引用计数规则,我们还可以判断当前共运行了该程序的多少个实例:    
    var   i:Integer;    
    begin    
       I:=0;    
    while   GlobalFindAtom(iAtom)<>0   do    
       begin    
       GlobalDeleteAtom(GlobalFindAtom(iAtom));    
       i:=i+1;    
       end;    
       ShowMessage(IntToStr(I));    
    end;    
    以上几种方法在笔者的Delphi   4.0,中文Windows95下通过。    
原创粉丝点击