You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AutoHotkey检测剪贴板中是否包含文件?

在AutoHotkey中区分剪贴板里的实际文件和文本路径

直接读取%Clipboard%时,复制的文件会被转成路径文本,没法和手动输入的路径字符串区分开。要解决这个问题,核心是检查剪贴板是否包含文件专用的格式(CF_HDROP)——这是系统复制文件时自动存入剪贴板的格式,普通文本路径不会有这个格式。

方法:自定义检测函数

写一个简单的函数,通过调用系统API判断剪贴板是否存在CF_HDROP格式:

ClipboardHasFiles() {
    ; 打开剪贴板
    if !DllCall("OpenClipboard", "ptr", 0)
        return false
    ; 获取CF_HDROP格式的数据句柄(CF_HDROP的常量值是15)
    hDrop := DllCall("GetClipboardData", "uint", 15, "ptr")
    ; 关闭剪贴板(必须执行,否则其他程序无法访问剪贴板)
    DllCall("CloseClipboard")
    ; 如果句柄不为空,说明剪贴板里有文件
    return hDrop != 0
}

使用示例

绑定一个快捷键来测试:

; 按F1键检测剪贴板内容
F1::
if ClipboardHasFiles() {
    MsgBox, 剪贴板里是实际的文件/文件夹
} else {
    MsgBox, 剪贴板里是普通文本(可能是路径字符串)
}
return

补充说明

  • 这个方法只判断剪贴板是否包含文件,不关心路径文本是否有效;如果需要进一步验证路径是否真实存在,可以用FileExist()函数配合%Clipboard%的内容。
  • 不要忽略CloseClipboard(),如果不关闭剪贴板,其他程序会无法访问它,容易引发问题。

内容的提问来源于stack exchange,提问作者Robb Hoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:32:36