使用VBScript中的剪贴板
我正在寻找一种使用VBScript在剪贴板上放置一些文本的方法。有问题的VBScript将作为我们的登录脚本的一部分进行部署。我想避免使用在干净的Windows XP系统上不可用的任何东西。
编辑:
回答有关此用途的问题。
我们希望鼓励组织内部的用户使用文件服务器来传输文档,而不是通过电子邮件不断发送附件。最大的障碍之一是人们并不总是清楚文件/文件夹的正确网络路径。我们开发了一个快速脚本,并将其添加到Windows上下文菜单中,以便用户可以右键单击任何文件/文件夹,并获取可以通过电子邮件发送给我们组织内某人的URL。
我希望将对话框中显示的URL也放置在剪贴板上。
GetNetworkPath
解决方案
到目前为止,我找到的最接近的解决方案是使用IE在剪贴板上获取和设置内容的方法。该解决方案的问题是用户收到安全警告。我很想将" about:blank"移到本地计算机安全区域,所以我没有收到警告,但是我不确定这样做的安全隐患是什么。
Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate("about:blank") objIE.document.parentwindow.clipboardData.SetData "text", "Hello This Is A Test" objIE.Quit
http://www.microsoft.com/technet/scriptcenter/resources/qanda/dec04/hey1215.mspx
我发现另一种解决方案在我看来并不完美,但没有烦人的安全警告,那就是从w2k3服务器使用clip.exe。
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "cmd.exe /c echo hello world | clip", 0, TRUE
http://www.petri.co.il/quickly_copy_error_and_display_messages.htm
根据以下问题使用多行字符串的示例
Dim string String = "text here" &chr(13)& "more text here" Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "cmd.exe /c echo " & String & " | clip", 0, TRUE
为避免与Internet Explorer和剪贴板访问相关的安全警告,建议我们使用Word应用程序对象及其方法将数据放置到剪贴板上。当然,我们只能在安装了MS Word的计算机上使用此功能,但如今已是大多数。 (尽管我们要求在"干净的"系统上进行操作:))
' Set what you want to put in the clipboard ' strMessage = "Imagine that, it works!" ' Declare an object for the word application ' Set objWord = CreateObject("Word.Application") ' Using the object ' With objWord .Visible = False ' Don't show word ' .Documents.Add ' Create a document ' .Selection.TypeText strMessage ' Put text into it ' .Selection.WholeStory ' Select everything in the doc ' .Selection.Copy ' Copy contents to clipboard ' .Quit False ' Close Word, don't save ' End With
我们可以在此处找到有关MS Word应用程序对象及其方法的详细信息:http://msdn.microsoft.com/zh-cn/library/aa221371(office.11).aspx
Microsoft没有提供让VBScript直接访问剪贴板的方法。如果我们在此站点上搜索"剪贴板",则会看到:
Although Visual Basic for Applications supports the Screen, Printer, App, Debug, Err, and Clipboard objects, VBScript supports only the Err object. Therefore, VBScript does not allow you to access such useful objects as the mouse pointer or the clipboard. You can, however, use the Err object to provide runtime error handling for your applications.
因此,仅使用VBScript就可以最好地间接使用记事本。
如果只是文本,我们是否不能简单地创建文本文件并在需要时读取内容?
另一个替代方法(显然是麻烦)是使用SendKeys()
方法。