编者注:虽然这个问题具体是关于将文件引用复制到剪贴板,但它的通用 Headers 导致了关于如何复制/获取文本的答案 .
作为Windows上经常在邮件中附加文件的Emacs用户,我一直在寻找一个实用程序来将文件(而不是其内容)复制到剪贴板,就像Windows资源管理器在righclick / copy上一样 .
我刚刚在SO上找到this,它在一个小程序中使用System.Windows.Forms.Clipboard`来完成 . 但它是在C#中,我没有立即访问编译器 . 所以我想知道这是否可以做到以及如何做到 .
我看到了几个引用,如this,在VBScripting中无法访问剪贴板,但是VB的msdn shows文档,所以我冒着风险提问 .
我以前从未写过VBScript,但在尝试之前我尝试过一些东西,首先运行一个粘贴了"Hello world"的副本,然后是 CreateObject
等的各种组合 .
更新:我需要调用Clipboard.SetFileDropList,所以我认为我不能按照答案的建议使用 ClipboardData
,它没有这个方法 .
Update for visitors
我最终使用的解决方案是编译 C#
本身,我不知道我已经有了编译器 .
Another update for visitors https://stackoverflow.com/a/29963268/18573就是我现在正在使用的,非常开心 .
4 回答
VBScript不支持剪贴板 . 托管vbscript的大多数主机(例如Internet Explorer)都通过主机提供访问权限 . 因此,在IE或HTA中运行的vbscript可以使用IE的剪贴板支持 . 脚本主机不提供剪贴板支持 . 您可以使用vbs文件通过COM自动启动IE,导航到本地页面(绕过安全警告),然后使用IE的剪贴板 .
这是一个代码snippit(Outp . 是一个文本流)
您可以使用html对象来检索剪贴板的内容:
EDIT: 我使用此片段将文本放回剪贴板,但它需要第三方软件;一个独立的可执行文件'clip.exe',可以在Windows 2003 Server上找到,也可以在internet上找到:
(是的,这一切都有点hackerdyhack)
你需要这个功能(对this进行一点修改):
对于"paste"操作的等效操作,我将运行一个命令行实用程序,如ClipOut或粘贴,将输出重定向到文件并读取文件内容 .
你可以在这里得到ClipOut:http://jasonfaulkner.com/ClipOut.aspx
你可以在这里粘贴:https://www.c3scripts.com/tutorials/msdos/paste.html
对于"copy"操作的等价物,我将使用实际附带Windows的剪辑命令行实用程序和类似的代码 .
关于剪辑实用程序:https://blogs.msdn.microsoft.com/oldnewthing/20091110-00/?p=16093