当前位置:  开发笔记 > 后端 > 正文

使用VBScript中的剪贴板

如何解决《使用VBScript中的剪贴板》经验,为你挑选了6个好方法。

我正在寻找一种方法,用VBScript将一些文本放在剪贴板上.有问题的VBScript将作为我们的登录脚本的一部分进行部署.我想避免使用干净的Windows XP系统上没有的任何东西.

编辑: 回答有关这是什么的问题.

我们希望鼓励组织内的用户使用文件服务器来传输文档,而不是通过电子邮件不断发送附件.对此最大的障碍之一是人们并不总是明白文件/文件夹的正确网络路径是什么.我们开发了一个快速脚本,并将其附加到Windows上下文菜单,以便用户可以右键单击任何文件/文件夹,并获取可以通过电子邮件发送给组织内某人的URL.

我希望对话框中显示的URL也放在剪贴板上.

GetNetworkPath



1> Zoredache..:

我发现的另一个解决方案在我看来并不完美,但没有恼人的安全警告是使用来自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


太棒了!但是把多线变量放在"hello world"上呢?

2> Zoredache..:

到目前为止我找到的最接近的解决方案是使用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



3> 小智..:

使用Microsoft的clip.exe最接近于拥有干净的Windows XP系统解决方案.但是,您不必调用CMD.EXE来托管它以便使用它.您可以直接调用它并在脚本代码中写入其输入流.关闭输入流后,clip.exe会将内容直接写入剪贴板.

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("clip")
Set oIn = oExec.stdIn
oIn.WriteLine "Something One"
oIn.WriteLine "Something Two"
oIn.WriteLine "Something Three"
oIn.Close

如果您需要等待剪辑完成,然后脚本才能继续处理,然后添加

' loop until we're finished working.
Do While oExec.Status = 0
    WScript.Sleep 100
Loop

并且不要忘记释放您的对象

Set oIn = Nothing
Set oExec = Nothing



4> unrealtrip..:

为避免与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/en-us/library/aa221371(office.11​​).aspx



5> tloach..:

Microsoft没有提供让VBScript直接访问剪贴板的方法。如果您'clipboard'在此站点上进行搜索,则会看到:

尽管Visual Basic for Applications支持Screen,Printer,App,Debug,Err和Clipboard对象,但VBScript仅支持Err对象。因此,VBScript不允许您访问诸如鼠标指针或剪贴板之类的有用对象。但是,可以使用Err对象为应用程序提供运行时错误处理。

因此,仅使用VBScript就可以最好地间接使用记事本。



6> 小智..:

这是使用"clip"命令的另一个版本,它避免了在字符串末尾添加回车符,换行符:

strA= "some character string"

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /C echo . | set /p x=" & strA & "| c:\clip.exe", 2

s = "String: """ & strA & """ is on the clipboard."
Wscript.Echo s

我只在XP中测试过这个.clip.exe从http://www.petri.co.il/downloads/clip.zip下载并放在C:\中.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有