读书人

Delphi两个程序不能与此同时执行只能

发布时间: 2012-08-10 12:19:33 作者: rapoo

Delphi两个程序不能同时执行,只能执行一个
在Delphi两个程序A/B,如果先打开A,在打开B时,仍旧弹出A,B没有显示;
如果先执行B,在打开A时,仍旧弹出B,A没有显示。
不知道什么原因。

[解决办法]
加互斥量就可以,供你参考:

Delphi(Pascal) code
const  CSMutexName = 'Global\*******_*******_******';var  OneInstanceMutex: THandle;  SecMem: SECURITY_ATTRIBUTES;  aSD: SECURITY_DESCRIPTOR;  s: string;begin  InitializeSecurityDescriptor(@aSD, SECURITY_DESCRIPTOR_REVISION);  SetSecurityDescriptorDacl(@aSD, True, nil, False);  SecMem.nLength := SizeOf(SECURITY_ATTRIBUTES);  SecMem.lpSecurityDescriptor := @aSD;  SecMem.bInheritHandle := False;  OneInstanceMutex := CreateMutex(@SecMem, False, CSMutexName);  if (GetLastError = ERROR_ALREADY_EXISTS)then  begin    //处理你的逻辑,是弹出B程序还是直接退出    CloseHandle(OneInstanceMutex);    Exit;      end;
[解决办法]
判断重复运行的方式有很多的 不只是CheckMutex互斥
还有信号判断 CreateSemaphore
映射判断 CreateFileMapping
原子判断 GlobalFindAtom 等等~~

[解决办法]
源流。
[解决办法]
CreateMutex
CreateEvent
CreateSemaphore
在工程文件里面找一下这几个函数。
[解决办法]
就是互斥好不..

你两个程序都按 F8 下断点调试一下就知道了.

读书人网 >.NET

热点推荐