UniqueInstance/zh CN
From Lazarus wiki
Jump to navigationJump to search
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
polski (pl) │
简介
关于
UniqueInstance 提供了一种简单的方法,强制同一时间只能运行一个应用的实例。若要在组件面板上安装 UniqueInstance 组件,最简单的方法是使用 Lazarus 的在线软件包管理器。UniqueInstance 支持 Windows 和 Linux 系统(macOS 默认不允许多实例运行)。
特性
- 易于使用:将组件拖入主窗体即可。
- 提供了一种机制来接收其他实例的命令行参数。
组件的用法
只需将组件拖放至 LCL 应用的主窗体中(位于“系统”页,图标是中间带数字“1”的红色圆圈)。
属性:
- Enabled:启用/禁用组件。
- Identifier:可为应用加上标识符。
- UpdateInterval:监测新实例发来消息的间隔时间(以毫秒为单位)。仅限 Unix 系统,因为 Win32 系统中通过 Windows 消息循环接收消息。
事件:
- OnOtherInstance:当有其他实例启动时会被调用。接收到传给新实例的参数。
纯代码的用法
在 uses 部分加入 uniqueinstanceraw 单元。
调用 InstanceRunning 函数,如果已有实例在运行将返回 true。 有两种调用方式:
- 不带参数:将用可执行文件名作为标识符,不会发送命令行参数。
- 带参数:
- Identifier:应用的标识符。
- SendParameters(default = false):在退出运行前,会向已运行实例发送命令行参数。
备注
- 用 fpc 2.4.2 在 win32(XP SP2)和 Linux(Ubuntu 9.04)下测试通过。
- 如果在同一个应用中放入两个具有标识符相同的 TUniqueInstance 组件,应用程序将无法加载。
- 标识符对于函数和组件来说都是选填项。如果未使用标识符,则会以可执行文件名称作为标识符。因此,如果 exe 文件名称有变动,就无法识别出其他实例。另一方面,如果两个不同的应用使用了相同的标识符,那么两个应用将无法同时运行。
- 提示:若要确保不会阻止其他应用的启动,可采用 GUID 作为标识符。
修改历史
- 11/01/17 - Version 1.1
- 兼容 fpc 3.0 以上版本
- 清理代码
- 17/04/11 - Version 1.0
- 修复 unix 系统下应用崩溃后依然识别为正在运行的问题
- 修复用 Gtk2 组件编译崩溃的问题
- 设置公开属性的默认值
- 优化性能并清理代码
- 采用新图标
- 02/10/07 - Version 0.2
- 适于 fpc 2.2.0
- 实现 unix 下接收命令行参数
- 常规优化并清理代码
- 16/12/06 - 初始版本。初始情况可参阅 我的博客。
作者
版权
改动后的 LGPL
下载
1.1版:GitHub
最新开发进展位于 GitHub:https://github.com/blikblum/luipack/tree/master/uniqueinstance
可用 SVN 客户端同步:
svn co https://github.com/blikblum/luipack.git/trunk/uniqueinstance