本文介绍了自动热键将文件复制到剪贴板并粘贴的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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

这篇关于自动热键将文件复制到剪贴板并粘贴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 23:06