本文介绍了自动热键将文件复制到剪贴板并粘贴的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用AutoHotKey自动执行某些工作。当对应于客户时,我有一个我使用的模板。我已经创建了模板,并将其复制到剪贴板,并使用AutoHotKey脚本将其保存到一个文件中--这一部分工作得很好。我现在想要保存剪贴板中的任何内容,加载预先保存的文件,将其粘贴到Outlook邮件窗口,然后将保存的剪贴板恢复到剪贴板。我已经尝试了几种方法,但都没有成功--通常情况下,复制到Outlook中的内容是剪贴板中最初的内容。以下是我尝试过的脚本:
^F5::
ClipSaved := ClipboardAll ; Save the entire clipboard to ClipSaved (Not just text)
Clipboard = ; Clear the clipboard
FileRead, Clipboard, *c <fullpath to saved file like c:dirfile.clip>
MyErr = %ErrorLevel%
if MyErr >= 1
{
MsgBox, Unable to read case_format.clip!
}
ClipWait, 5
SendInput, ^v
Clipboard := ClipSaved ; Restore the clipboard we saved
ClipSaved = ; Free the memory in case the clipboard was very large
Return
我也试过使用WinClipApi,它也不起作用。它不会复制任何内容,我最后会听到Windows发出"哔"的一声:
^F5::
WinClip.Snap( ClipSaved )
WinClip.Clear()
WinClip.Load( <full path to file like "c:dirfile.clip"> )
ClipWait,5,
WinClip.Paste()
WinClip.Restore( ClipSaved )
Return
我尝试了混合和匹配片段(如使用WinClip示例中的FileRead AHK命令,用‘SendInput,^v’替换WinClip.Paste()等等),但似乎都不起作用。有什么建议吗?
推荐答案
您可能会在Windows完成处理之前销毁剪贴板ctrl+v
这将等待Windows完成粘贴,然后再修改剪贴板
SendInput, ^v
Sleep 2000 ; Wait 2s for Windows to finish with clipboard
Clipboard := ClipSaved
延迟的长度取决于您粘贴的内容。粘贴100MB图像需要比几行文本更长的延迟
如果剪贴板包含文本以外的内容,请考虑使用CLIPWAIT的第二个参数:
ClipWait, 2, 1
这篇关于自动热键将文件复制到剪贴板并粘贴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!