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

求AutoHotKey脚本:复制邮件链接并通过CMD/运行窗口打开邮件

完整AutoHotkey解决方案:Outlook邮件链接操作整合脚本

我帮你整合了两个需求的完整实现,做成了两个独立的热键触发功能,直接复制脚本就能用,也可以根据自己的习惯修改热键:


功能1:复制Outlook邮件链接并通过CMD打开(热键:Ctrl+Alt+C)

这个功能会自动获取你在Outlook中选中的邮件的专属链接,复制到剪贴板后,通过CMD调用系统协议打开该邮件。

^!c:: ; Ctrl+Alt+C 触发
    ; 检查Outlook是否正在运行
    if !WinExist("ahk_class rctrl_renwnd32") {
        MsgBox, Outlook未运行,请先打开Outlook!
        return
    }

    ; 获取Outlook应用对象
    try {
        olApp := ComObjActive("Outlook.Application")
        olExplorer := olApp.ActiveExplorer()
        olSelection := olExplorer.Selection
    } catch {
        MsgBox, 获取Outlook对象失败,请确认Outlook处于前台!
        return
    }

    ; 检查是否选中了邮件
    if olSelection.Count = 0 {
        MsgBox, 请先选中一封邮件!
        return
    }

    ; 获取选中邮件的EntryID,构造Outlook协议链接
    olMail := olSelection.Item(1)
    mailLink := "outlook://mailitem/?id=" . olMail.EntryID
    Clipboard := mailLink ; 复制到剪贴板

    ; 通过CMD打开邮件(隐藏CMD窗口)
    Run, cmd /c start "打开邮件" "%mailLink%", , hide
    ToolTip, 已打开邮件:%olMail.Subject%
    SetTimer, ToolTip, -2000 ; 2秒后自动隐藏提示
return

功能2:浏览器选中附件链接后一键唤起Win+R打开(热键:Ctrl+Alt+O)

这个功能会先复制你在浏览器中选中的邮件附件链接,然后自动唤起Windows运行对话框,粘贴链接并打开。

^!o:: ; Ctrl+Alt+O 触发
    ; 复制选中的链接
    Send, ^c
    ClipWait, 1 ; 等待剪贴板更新,超时1秒
    if ErrorLevel {
        MsgBox, 未检测到选中的文本,请先选中邮件附件链接!
        return
    }

    ; 简单验证是否为有效链接
    if !InStr(Clipboard, "://") {
        MsgBox, 剪贴板内容不是有效链接,请重新选中!
        return
    }

    ; 唤起Win+R对话框,粘贴链接并回车
    Send, #r
    WinWaitActive, 运行, , 1 ; 等待运行对话框出现,超时1秒
    if ErrorLevel {
        MsgBox, 无法唤起运行对话框!
        return
    }
    Send, ^v
    Sleep, 100 ; 短暂等待确保粘贴完成
    Send, {Enter}
return

完整整合脚本

把上面两个功能合并成一个脚本,保存为.ahk文件后用AutoHotkey运行即可:

; 完整AutoHotkey脚本:Outlook邮件链接操作工具
; 功能1:Ctrl+Alt+C - 复制Outlook选中邮件链接并通过CMD打开
; 功能2:Ctrl+Alt+O - 浏览器选中链接后唤起Win+R打开

^!c:: ; Ctrl+Alt+C 触发
    if !WinExist("ahk_class rctrl_renwnd32") {
        MsgBox, Outlook未运行,请先打开Outlook!
        return
    }
    try {
        olApp := ComObjActive("Outlook.Application")
        olExplorer := olApp.ActiveExplorer()
        olSelection := olExplorer.Selection
    } catch {
        MsgBox, 获取Outlook对象失败,请确认Outlook处于前台!
        return
    }
    if olSelection.Count = 0 {
        MsgBox, 请先选中一封邮件!
        return
    }
    olMail := olSelection.Item(1)
    mailLink := "outlook://mailitem/?id=" . olMail.EntryID
    Clipboard := mailLink
    Run, cmd /c start "打开邮件" "%mailLink%", , hide
    ToolTip, 已打开邮件:%olMail.Subject%
    SetTimer, ToolTip, -2000
return

^!o:: ; Ctrl+Alt+O 触发
    Send, ^c
    ClipWait, 1
    if ErrorLevel {
        MsgBox, 未检测到选中的文本,请先选中邮件附件链接!
        return
    }
    if !InStr(Clipboard, "://") {
        MsgBox, 剪贴板内容不是有效链接,请重新选中!
        return
    }
    Send, #r
    WinWaitActive, 运行, , 1
    if ErrorLevel {
        MsgBox, 无法唤起运行对话框!
        return
    }
    Send, ^v
    Sleep, 100
    Send, {Enter}
return

注意事项

  • 确保你的AutoHotkey版本支持COM对象(一般v1.1及以上版本都支持)
  • 功能1需要Outlook处于前台,且选中至少一封邮件
  • 功能2适用于任何浏览器,只要选中的是包含://的有效链接(比如Outlook附件的outlook://链接或网页附件的http://链接)
  • 可以根据自己的习惯修改热键(比如把^!c改成^+c即Ctrl+Shift+C)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:38:43