# OnClipboardChange

每当剪贴板内容发生改变时, 导致指定的函数被自动调用.

    OnClipboardChange Function , AddRemove

## 参数

Function

  类型: 函数对象

  要调用的函数. 函数的参数和返回值描述如下.

AddRemove

  类型: 整数

  如果为空或省略, 则默认为 1(在任何先前的注册函数之后调用该函数). 否则, 指定下列数字之一:

  - 1 = 在任何先前的注册函数之后调用该函数.
  - -1 = 在任何先前的注册函数之前调用该函数.
  - 0 = 不调用该函数.

## Function

函数应该接受一个参数:

    FunctionName(Type)

Type

  类型: 整数

  下列数字之一:

  - 0 = 剪贴板为空.
  - 1 = 剪贴板包含可以用文本表示的内容(包括从资源管理器窗口复制的文件).
  - 2 = 剪贴板包含完全是非文本的内容, 如图片.

### 返回值

如果这是最近的或唯一的 OnClipboardChange 函数, 其返回值会被忽略. 否则, 此函数会返回一个非零整数来阻止随后的函数被调用.

## 备注

如果剪贴板在 OnClipboardChange 函数已经运行时发生更改, 则剪贴板通知事件会丢失. 如果不希望这样, 请使用 Critical. 不过, 这样做也会缓冲/延迟 OnClipboardChange 线程运行时发生的其他线程(例如按下热键).

如果是脚本本身改变了剪贴板内容, 脚本中的 OnClipboardChange 函数或标签通常不会立即执行; 也就是说紧接在改变剪贴板函数后面的函数就像提前运行了一样. 要强制立即执行这个函数, 请在改变剪贴板内容后使用短暂的延迟, 例如 `Sleep 20`.

## 相关

A_Clipboard, OnExit, OnMessage, CallbackCreate

## 示例

在每次剪贴板更改时简要显示工具提示.

    OnClipboardChange ClipChanged

    ClipChanged(clip_type) {
        ToolTip "剪贴板数据类型: " clip_type
        Sleep 1000
        ToolTip  ; 关闭工具提示.
    }

dftg