你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
防止应用程序的多个实例运行
 

一、原理

我们在设计软件时需要考虑的一个现实问题是如果用户打开了多个应用程序时应该怎样处理。一般标准的做法是弹出一个提示窗口告诉用户该应用程序已经处于运行中,然后阻止该实例的重复运行。具体实现方法要用到Windows的一个全局同步对象mutex。当第一次启动一个实例时我们使用CreateMutex函数创建一个mutex对象,然后每次启动一个实例时我们都使用OpenMutex函数检查mutex对象的值。若mutexnil则表示还没有该实例在运行,否则表示已有实例在运行。

二、程序代码

program Project1;

uses  Forms,  windows,  Dialogs,  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var mutex:THandle;

begin

  try

  mutex:=OpenMutex(0,false,'mutexname');

  if mutex=0 then //没有该实例在运行

     begin

        mutex:=CreateMutex(nil,true,'mutexname');

        //创建一个名为mutexnamemutex对象

        Application.Initialize;

        Application.CreateForm(TForm1, Form1);

        Application.Run;//启动一个实例

     end

  else //若已有一个实例在运行

     begin

        ShowMessage('应用程序已在运行中!');

        Application.Terminate;//阻止实例的重复运行

     end;

  finally

    ReleaseMutex(mutex);//释放mutex对象

  end;

end.

三、说明

    以上代码应出现在项目文件的启动代码中。该程序用delphi6.0 windows98上通过。

 

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089