两种Delphi防止多实例运行的方法

在学习Delphi时,遇到需要程序单实例运行的时候,经过查阅,暂时发现以下两种比较简单的方法,可以防止程序多实例运行,各有优劣,据需选择。

方法一,添加以下unit即可,优点是可激活已存在的程序窗口,即使已最小化(包括最小化到托盘),缺点是可能存在与其他程序的互斥(可自行修改STR_UNIQUE的值以尽量减少该可能性)。代码如下:

方法二,修改工程文件源代码,程序初始化时创建互斥对象,并检查是否互斥以保证单实例运行。优点是代码少且简单,缺点是无法将已运行的窗口激活。实例代码如下: