多语言展示
当前在线:1534今日阅读:155今日分享:35

Delphi利用Mutex禁止程序重复启动

Delphi利用Mutex禁止程序重复启动,Mutex可以跨进程。
工具/原料
1

Delphi7

2

Windows电脑

方法/步骤
1

打开Delphi7集成开发环境,F9编译运行默认工程,在工程文件目录下会生产Project1.exe可执行文件。因为本人电脑同时装了Delphi xe4,所以有些图标可能看起来和Delphi7不太一样。

2

关闭程序,回到编辑界面,点击Project-View Source,打开工程源代码文件。

3

在工程源代码文件,引入windows单元,并定义一个THandle变量即防止程序重复启动的句柄,和一个进程名的常量,代码如下:program Project1;uses  Forms, Windows,  Unit1 in 'Unit1.pas' {Form1};{$R *.res}var  hMutex: THandle;const  Name = 'Project1';

4

在工程源代码文件begin..end代码块,写如下代码,防止程序重复启动:begin  hMutex := CreateMutex(nil, False, Name);  if GetLastError = ERROR_ALREADY_EXISTS then  begin    MessageBox(0, '该程序已启动', '提示', MB_OK);    Application.Terminate;  end;  Application.Initialize;  Application.CreateForm(TForm1, Form1);  Application.Run;  ReleaseMutex(hMutex);end.解释一下:创建名为Name互斥体,如果GetLastError 为ERROR_ALREADY_EXISTS说明互斥体已存在,即程序已经启动,就退出。如果不存在,进行程序正常运行,最后释放互斥体。

5

F9运行程序,窗体显示,查看系统资源管理器,可以看到Project1.exe

6

进入第一步本程序文件目录,双击Project1.exe,运行程序,弹出‘改程序已启动’对话框。

推荐信息