如何在vbscript中使用剪贴板?

如何在vbscript中使用剪贴板?,vbscript,clipboard,Vbscript,Clipboard,编者按: 虽然这个问题是关于将文件引用复制到剪贴板的,但它的通用标题给出了有关如何复制/获取文本的答案 作为Windows上的Emacs用户,经常在邮件中附加文件,我一直在寻找一个实用程序,将文件(而不是其内容)复制到剪贴板,就像Windows资源管理器在righclick/copy上所做的那样 我刚刚在这里找到了一个小程序,它使用System.Windows.Forms.Clipboard`来实现这一点。但是它是C语言的,我没有直接访问编译器的权限。所以我想知道这是否可以做到,如何做到 我看到

编者按
虽然这个问题是关于将文件引用复制到剪贴板的,但它的通用标题给出了有关如何复制/获取文本的答案

作为Windows上的Emacs用户,经常在邮件中附加文件,我一直在寻找一个实用程序,将文件(而不是其内容)复制到剪贴板,就像Windows资源管理器在righclick/copy上所做的那样

我刚刚在这里找到了一个小程序,它使用System.Windows.Forms.Clipboard`来实现这一点。但是它是C语言的,我没有直接访问编译器的权限。所以我想知道这是否可以做到,如何做到

我看到了一些参考资料,例如剪贴板在VBScript中不可访问,但是msdn文档用于VB,因此我冒着这个问题的风险

我以前从未编写过VBScript,但在询问之前,我确实尝试了一些方法,首先运行粘贴了“Hello world”的副本,然后是
CreateObject
等的各种组合

更新:我需要打电话,所以我不认为我可以使用答案建议的
ClipboardData
,它没有这种方法

访客更新

我最终使用的解决方案是编译
C
本身,我不知道我已经有了一个编译器

另一个访客更新
这是我现在使用的,非常高兴。

VBScript不支持剪贴板。大多数承载vbscript的主机(如Internet Explorer)都通过主机进行访问。因此,在IE或HTA中运行的vbscript可以使用IE的剪贴板支持。脚本主机不支持剪贴板。您可以使用vbs文件通过COM自动化启动IE,导航到本地页面(绕过安全警告),然后使用IE的剪贴板

下面是一个代码snippit(Outp.是一个文本流)


您可以使用html对象检索剪贴板的内容:

' Get clipboard text
Set objHTML = CreateObject("htmlfile")
text = objHTML.ParentWindow.ClipboardData.GetData("text")
编辑:我使用这个片段将文本放回剪贴板,但它需要第三方软件;一个独立的可执行文件“clip.exe”,可在Windows 2003 Server上或仅在以下站点上找到:

(是的,这是一个有点黑客攻击)

您需要这个函数(是对以下函数的一点修改):

对于与“粘贴”操作等效的操作,我将运行命令行实用程序(如ClipOut或paste),将输出重定向到文件并读取文件内容

return = WshShell.Run("cmd /c clipout.exe > output.txt", 0, true)

Set fso  = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("output.txt", 1)
text = file.ReadAll
file.Close
您可以在此处获取ClipOut:

您可以在此处获得粘贴:

对于等效的“复制”操作,我将使用clip命令行实用程序,该实用程序实际上随Windows和类似的代码一起提供,如上所述


关于clip实用程序:

@Lankymart似乎问题在于向剪贴板添加一些文本,而不是文件对象。请参阅我正在使用的解决方案,在这种情况下,您需要优化问题,特别是标题。剪辑默认在Windows now(Win7)中。使用WriteLine的解决方案将附加换行符。此解决方案将在以下内容后添加一个空格:wshShell.Run“cmd.exe/c set/p=“&text&”如何获取windows资源管理器的剪贴板(复制的文件/文件夹的windows文件路径)?有什么想法吗?我尝试搜索整个internet和stackoverflow。但没有针对特定内容的答案。
' Do something with the text
text = replace(text, "you ", "you and your dog ")

' Put it back to the clipboard
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("clip")

Set oIn = oExec.stdIn

oIn.WriteLine text
oIn.Close
'TO CLEAR
ClipBoard("")

'TO SET
ClipBoard("Hello World!")

'TO GET
Result = ClipBoard(Null)

Function ClipBoard(input)
'@description: A quick way to set and get your clipboard.
'@author: Jeremy England (SimplyCoded)
  If IsNull(input) Then
    ClipBoard = CreateObject("HTMLFile").parentWindow.clipboardData.getData("Text")
    If IsNull(ClipBoard) Then ClipBoard = ""
  Else
    CreateObject("WScript.Shell").Run _
      "mshta.exe javascript:eval(""document.parentWindow.clipboardData.setData('text','" _
      & Replace(Replace(Replace(input, "'", "\\u0027"), """","\\u0022"),Chr(13),"\\r\\n") & "');window.close()"")", _
      0,True
  End If
End Function
return = WshShell.Run("cmd /c clipout.exe > output.txt", 0, true)

Set fso  = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("output.txt", 1)
text = file.ReadAll
file.Close