gpt4 book ai didi

delphi - 如何确保我的应用程序仅运行一个实例?

转载 作者:行者123 更新时间:2023-12-03 14:33:42 25 4
gpt4 key购买 nike

Delphi XE VCL 是否支持确保仅运行一个应用程序实例?

过去,我使用库代码来控制互斥锁,这看起来总是很复杂。当我在 Delphi XE 中开始一个新项目时,我想知道我是否需要挖掘旧代码,或者 XE 中是否已经内置了支持?或者是否有另一种易于应用、美观且现代的代码?

最佳答案

启动应用程序时创建一个命名的互斥体。检查 GetLastError 以查看其他实例是否已在运行。

将此代码放在 DPR 文件中“begin”之后。将 GUID 替换为您自己的 GUID。当我需要一个不太可能用于其他用途的文本常量时,我​​通常只需按 Ctrl+G 即可获取 GUID!

if CreateMutex(nil, True, '6EACD0BF-F3E0-44D9-91E7-47467B5A2B6A') = 0 then
RaiseLastOSError;

if GetLastError = ERROR_ALREADY_EXISTS then
Exit;

代码看起来可能正在泄漏句柄,因为它没有保存 CreateMutex 的返回值。它不是。当我们的应用程序终止时,Windows 将自动释放句柄,这对我们来说绝对没问题。

关于delphi - 如何确保我的应用程序仅运行一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com