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 下断点调试一下就知道了.