initialization
hnd:=CreateMutex(nil,True,'sys32ws kernl extream');
if(GetLastError=ERROR_ALREADY_EXISTS) then
begin
Halt;
end;finalization
if(hnd<>0) then
CloseHandle(hnd);
hnd:=CreateMutex(nil,True,'sys32ws kernl extream');
if(GetLastError=ERROR_ALREADY_EXISTS) then
begin
Halt;
end;finalization
if(hnd<>0) then
CloseHandle(hnd);
解决方案 »
- QR怎样调出打印设置窗体?
- 在局域网中,直到对方的ip地址,发送一个信息,适时接受并能弹出一个消息提示
- 小弟才学delphi,提个问题。关于复制、粘帖
- 怎样实现SYBASE与SQL-SERVER的数据库同步?
- delphi程式报错:Access violation at address 请高手帮忙!小弟感激不尽……
- 如何限制edit只能接受数字、回车键、Del键以及BackSpace键?
- MD5控件怎么用?
- 这是什么问题?
- 在DELPHI里怎么检查MSSQL7是否启动,怎么用程序来启动MSSQL7?
- datasnap三层结构,查询同一张表,大部分客户端查找正确,部分客户端字段值全乱(如下图)
- 准备找工作,发个贴..
- delphi7编译生成的exe文件,考到另一台没有delphi的机器上不能运行,也没有报错,求助!!
这是在单元初始化时,创建一个互斥对象
initialization
hnd:=CreateMutex(nil,True,'sys32ws kernl extream');
if(GetLastError=ERROR_ALREADY_EXISTS) then
begin
Halt;
end; 在单元结束时释放互斥对象
finalization
if(hnd <>0) then
CloseHandle(hnd);
hnd:=CreateMutex(nil,True,'sys32ws kernl extream');
if(GetLastError=ERROR_ALREADY_EXISTS) then 这是判断是否已创建一个名为'sys32ws kernl extream'互斥
begin
Halt; 这里就是退出程序
end; if(hnd <>0) then
CloseHandle(hnd);
这是释放互斥总体就是说程序运行初始化的时候检查是否已经有为'sys32ws kernl extream'互斥
,没有继续执行其他的,有就退出,程序正常退出的时候释放互斥,以免下次运行检查到已有互斥而导致程序退出
这是一个典型的防止程序二次运行的代码
initialization 下的代码除非那个单元文件你不在工程文件里加入,不然程序运行必定执行初始化。。要不加入,必定在其他单元文件关联,照样初始化要执行要不你叫楼主把那单元文件删了,因为已经没用了
我猜这应该是防止同一系列的AP同时执行吧。。比如说QQ音乐跟QQ游戏,都加上这个后,两个只能在同一时间执行一个。。