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

2023-12-28

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

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


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

Put this code right after "begin" in your DPR file. Replace the GUID with one of your own. When I need a text constant that's unlikely to be used for anything else, I usually just hit Ctrl+G to get a GUID!

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

if GetLastError = ERROR_ALREADY_EXISTS then
  Exit;

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保我的应用程序仅运行一个实例? 的相关文章

  • 构建机器是否需要单独的 Delphi XE4 许可证?

    用于通过以下方式构建应用程序dcc32在构建服务器上我可以使用 Delphi Trial 这种方法的许可证没有任何问题 现在 我将通过以下方式在 TeamCity 上构建 Delphi XE4 应用程序msbuild 我是否需要拥有构建机器
  • 为什么不提高EInvalidPointer?

    德尔福文档状态 http docwiki embarcadero com Libraries en System SysUtils EInvalidPointer 切勿提出E无效指针直接异常 E无效指针由内存管理器内部引发 我正在编写一个自
  • 使用 Inno Setup 中格式化(部分粗体)的文本制作安装程序?

    有人看过 GOG com 游戏安装程序吗 如何制作像这样的欢迎文本字符串 包括单个标题中的路径和需要大小 其中部分内容加粗 以下是修改安装路径后如何更改字符串换行的示例 您可以使用TRichEditViewer http www jrsof
  • 如何指定从 Delphi TStream 读取的组件的所有者?

    我正在从流中读取组件 并且希望能够指定 Owner 属性 var TComponent comp stream Seek 0 soFromBeginning comp stream ReadComponent nil 谁拥有 comp 我该
  • 为什么使用过程来创建对象比使用函数更受欢迎?

    这类似于这个问题 https stackoverflow com questions 1894217 is it memory safe to provide an object as a function result 我问 为什么 到最
  • 有没有办法在 TRttiField 中 FieldType 为零的结构中获取 real48 和短字符串变量的 RTTI 提示?

    我发现 Delphi 中的扩展 RTTI 功能有一个奇怪的疏忽 可能是故意的 我想转储包含大约 1500 个不同字段的记录类型中的所有字段 是的 认真的 其中一些是 real48 类型 一些是短字符串 对于这两种类型 在运行时这些类型的 F
  • 如何在以管理员身份运行模式下部署应用程序?

    如何部署应用程序 使其需要管理员权限 而无需最终用户手动执行此操作 我使用 Delphi 2009 来构建该应用程序 您可以使用以下命令通知 Windows 您的应用程序需要以管理员身份运行requestedExecutionLevel应用
  • 使用 gmail 和 Indy 发送电子邮件

    我正在尝试使用 gmail 从 Delphi 发送电子邮件 我有 Indy 10 5 9 0 和 Delphi XE3 我从以下位置获得了示例代码 http www andrecelestino com delphi xe envio de
  • 如何解决内存分段并强制FastMM释放内存给OS?

    注意 32 位应用程序不计划迁移到 64 位 我正在使用一个非常消耗内存的应用程序 并且几乎优化了与内存分配 取消分配相关的所有相关路径 应用程序本身没有内存泄漏 没有句柄泄漏 没有任何其他类型的泄漏 据我所知并经过测试 我无法触及的第 3
  • XE2 中的 COM 是否损坏?我该如何解决它?

    Update XE2 Update 2 修复了下述错误 下面的程序是从实际程序中截取的 在 XE2 中失败并出现异常 这是 2010 年的回归 我没有 XE 来测试 但我希望该程序在 XE 上运行良好 感谢 Primo 确认代码在 XE 上
  • 为什么我不能在接收数组参数的函数中使用 SetLength?

    我正在尝试使用以下函数来设置动态数组 即 var 参数 的长度 当我尝试编译代码时只有一个错误 dcc64 错误 lolcode dpr 138 E2008 不兼容类型 function execute var command array
  • 创建FileStream时如何处理异常

    我有一个这样的函数 我想重构它 function Myfunction sUrl sFile String Boolean var GetData TFileStream begin Result False if the line bel
  • 如何更新Delphi对象检查器?

    继我最近发布的这个问题之后 组件编辑器可以在多个组件上执行吗 https stackoverflow com questions 14802371 can a component editor be executed on multiple
  • 在运行时创建 TQReport 元素

    在运行时创建 TQReport 元素 嗯 至少尝试一下 我不知道这份报告中应出现哪些标题或数据 我得到一个代表数据行和列的 TString 的 TList 我在组的带打印事件中植入 创建 指令 并在主数据行带的 OnNeedData 事件中
  • 如何在 OSX 上的应用程序名称下创建子项菜单?

    如何在下面添加TMenuItemProject1以上Quit在下面的屏幕截图上 我创建了一个 TMenuBar 并选中了 UseOSMenu 属性 我添加的第一个 TMenuItem 是主栏中的第二个 TMenuItem 您可以通过将 II
  • 如何在Delphi XE中通过名称获取类类型引用?

    我实际上正在尝试使用 Rtti 来实现通用方法调用程序 它应该像这样工作 我将提供类名 方法名和参数 调用者将通过调用此类的指定方法来完成其工作 因此 我需要类引用才能获取其 Rtti 信息并寻找我想要调用的方法 有没有办法在不实现我想要使
  • 如何确保 FormClose 程序运行,无论程序如何退出?

    在 Delphi 7 中 我有一个 TMainForm FormClose 过程 旨在在程序退出时写出一些状态 这在手动关闭程序时效果很好 但是 我发现如果程序被 Windows 强制 退出 例如在 Windows 更新后需要重新启动 则不
  • 如何仅在调试模式下激活 ReportMemoryLeaksOnShutdown?

    我需要激活ReportMemoryLeaksOnShutdown报告应用程序内存泄漏的功能 但仅限于调试模式 当 Delphi IDE 运行时 我怎样才能做到这一点 如果您的意思是使用调试构建配置 D2007 编译的 调试模式 则您将定义
  • Delphi线程死锁

    我有时会在销毁某些线程时遇到死锁问题 我尝试过调试该问题 但在 IDE 中调试时似乎从未存在死锁 可能是因为 IDE 中的事件速度较低 问题 当应用程序启动时 主线程会创建多个线程 线程始终处于活动状态并与主线程同步 完全没有问题 当应用程
  • Async InputQuery 不处理“取消”按钮

    我正在使用一个简单的调用TDialogServiceAsync InputQuery 使用单个输入 它只是忽略了Cancel按钮和窗口的X关闭按钮 But the Ok按钮工作正常 这是我的代码 uses FMX DialogService

随机推荐

  • 使用 get_or_create 返回多个对象

    我正在编写一个小的 django 命令来将数据从 json API 端点复制到 Django 数据库中 此时我实际上创建了对象obj created model objects get or create filters 我得到一个Mult
  • Laravel 验证错误消息字符串

    我想将 laravel 验证错误数组转换为逗号分隔的字符串 这是在 ios 应用程序的 api 服务中使用的 以便iOs开发者可以轻松处理错误消息 I tried valArr foreach validator gt errors as
  • 保护 Web API 免受未经授权的应用程序的侵害

    我正在开发一个使用大量 AJAX 与服务器通信的网页 反过来 服务器具有广泛的 REST JSON API 公开 Web 客户端调用的不同操作 该网站可供匿名用户和经过身份验证的用户使用 正如您所料 经过身份验证的用户发出的 Web 服务调
  • WKWebKit:没有 dataDetectorTypes 参数

    In UIWebView 很容易添加UIDataDetectorTypes到一个视图 myUIWebView dataDetectorTypes UIDataDetectorTypePhoneNumber 等等 然而 WKWebView似乎
  • 如何正确保护使用应用内购买和本地数据库的应用程序

    我目前正在为 Android 开发一款益智游戏 我希望完成后具有以下功能 免费玩 支持广告 因此需要有效的互联网连接 如果无法显示广告则无法玩 应用内购买选项可删除广告和连接检查 应用内购买附加内容 然而我意识到有很多问题源于我的要求 拥有
  • 将缩写词替换为其值 Python

    我正在努力清理一些包含大量首字母缩略词的文本 因此 我制作了一本包含一些示例及其值的字典 但是我遇到了一些问题 下面的示例代码 def acr text acr dict ft feet mi michigan for word abr i
  • Microsoft.AspNetCore.Mvc.NewtonsoftJson 6.0.2 与 net5.0 不兼容

    我正在 Mac 上使用 Visual Studio 2019 尝试启动 REST API 项目 尝试安装 NewtonsoftJson 6 0 2 时立即陷入困境 我只是在学习教程 正在使用的 NewtonsoftJson 版本是 3 1
  • 基于 C# 的规则语言示例?

    您能否提供一个用 C 编写的规则定义语言的好示例 Java 人有JESS http herzberg ca sandia gov C 有什么好东西吗 此页面显示了 C 中的开源规则引擎的一些示例 http csharp source net
  • 如何在 CAKEPHP 中访问 GET 请求?

    如何在 CAKEPHP 中访问 GET 请求 如果我在 url 中传递一个变量 http samplesite com page key1 value1 key2 value2 我应该使用 GET 还是 this gt params 来获取
  • 解决8字谜题的有效方法是什么?

    8 拼图是一块有 9 个位置的方板 由 8 个编号的图块和一个间隙填充 在任何时候 与间隙相邻的图块都可以移动到间隙中 从而创建新的间隙位置 换句话说 间隙可以与相邻 水平和垂直 的图块交换 游戏的目标是从任意配置的图块开始 然后移动它们以
  • Pyinstaller 与 ImageTk 和 Tkinter 不能很好地配合

    我正在尝试使用 pyinstaller 来构建我一直在开发的程序 但之后我遇到了二进制文件的问题 这是我的程序 首先我跑了pyinstall test py然后我使用运行二进制文件 dist main test但我收到了正常运行脚本时不会收
  • PHP date_format():如何从字符串值格式化日期

    我有一些 PHP 代码 exd date create 01 Dec 2015 exd date format exd Y m d echo exd 用于格式化日期 预期输出是2015 12 01但它返回2016 12 01 我缺少什么 U
  • Apache 删除请求

    我有个问题 当我发送 DELETE 请求时 我的网络服务器会收到 403 响应 我不想删除我请求中的东西 我只需要知道使用的方法是删除 如何配置我的网络服务器使其不再发送 403 消息 我不想启用 WebDAV 或类似的功能 我只想知道请求
  • iOS7 中 MKMapView 的快照

    我正在尝试在 iOS7 应用程序中创建 MKMapView 的快照 就像在以前的 iOS 版本中推荐的那样 UIImage renderMapViewToImage UIGraphicsBeginImageContextWithOption
  • 如何在 C++ 中使用带有指向对象的指针向量的查找算法?

    我想在对象指针向量中找到匹配对象 这是一个示例代码来说明我的问题 class A public A string a a a bool operator const A p return p a a private string a vec
  • 如何使用 React 实现滚动间谍

    我想实施一个滚动间谍没有引导程序 网上查了很多代码 都是由jQuery 如何实施滚动间谍仅仅依靠 React 的力量 我做了一个反应Wrapper 与渲染道具 https reactjs org docs render props html
  • Ant 任务中的多个依赖项

    如果我有三个目标 其中一个all one compile和一个jsps 我该怎么做all依赖于另外两个 可不可能是
  • WinAPI调用访问没有驱动器盘符的USB存储?

    我注意到 某些 USB 存储设备不会在 Windows 中注册为常规驱动器 因为它们甚至没有分配驱动器号 因此 我显然无法使用标准文件操作 C API 访问它们 我可以使用哪些 WinAPI 调用在这些奇怪的设备上执行一些正常的文件操作 所
  • Google Drive API 更改:“无法将内容上传到 application/vnd.google-apps.folder 类型的文件”

    我们使用 Google Drive 来存储用户创建的文件我们的应用程序 http storymap knightlab com 我们没有对云端硬盘应用程序代码进行任何更改 但用户现在报告错误 您无法将内容上传到 application vn
  • 如何确保我的应用程序仅运行一个实例?

    Delphi XE VCL 是否支持确保仅运行一个应用程序实例 过去 我使用库代码来控制互斥体 这似乎总是很复杂 当我在 Delphi XE 中开始一个新项目时 我想知道我是否需要挖掘旧代码 或者 XE 中是否已经内置了支持 或者是否有另一