# #SingleInstance

确定脚本已在运行时是否允许再次运行.

    #SingleInstance ForceIgnorePromptOff

## 参数

ForceIgnorePromptOff

  类型: 字符串

  如果省略参数, 则默认为 Force. 否则, 请指定以下单词之一:

  Force: 跳过对话框并自动替换旧实例, 效果类似于 Reload 函数.

  Ignore: 跳过对话框并让旧实例继续运行. 换句话说, 试图启动已经运行的脚本会被忽略.

  Prompt: 显示一个对话框, 询问是保留旧实例还是用新实例替换它. 如果不使用此指令, 这是默认的行为.

  Off: 允许一个脚本同时运行多个实例.

## 备注

当使用以下命令行开关时, 该指令将被忽略: /force /restart

和其他指令一样, #SingleInstance 不能有条件地执行.

## 限制

脚本以前的实例是通过搜索带有默认标题的主窗口来识别的. 因此, 在下列情况下, 可能找不到该脚本的先前实例:

- 其主窗口的标题已经改变.
- 它运行在不同版本的 AutoHotkey 上.
- 它的主窗口不再是顶层的, 比如脚本使用 SetParent 把它的父窗口改成 NULL(0) 以外的窗口.

最多只能检测到一个先前的实例, 并向其发送消息要求其关闭. 因此, 以下的额外限制也适用:

- 如果有多个实例(比如脚本的前几个实例使用了 `#SingleInstance Off` 模式), 则向最上面的匹配实例发送消息, 而其他实例则不被考虑.
- 如果之前的实例运行的完整性级别高于新的实例(其中以管理员身份运行 > 以 UI 权限运行 > 正常运行), 由于安全限制, 它不能被关闭.

如果脚本的多个实例同时启动, 它们可能无法检测到彼此, 或者都针对同一个前一个实例. 这将导致脚本的多个实例启动.

## 相关

Reload

## 示例

跳过对话框, 自动替换旧实例.

    #SingleInstance force

dftg