求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
相关产品推荐
相关产品推荐

