Zor*_*che 18 vbscript clipboard windows-xp
我正在寻找一种方法,用VBScript将一些文本放在剪贴板上.有问题的VBScript将作为我们的登录脚本的一部分进行部署.我想避免使用干净的Windows XP系统上没有的任何东西.
编辑: 回答有关这是什么的问题.
我们希望鼓励组织内的用户使用文件服务器来传输文档,而不是通过电子邮件不断发送附件.对此最大的障碍之一是人们并不总是明白文件/文件夹的正确网络路径是什么.我们开发了一个快速脚本,并将其附加到Windows上下文菜单,以便用户可以右键单击任何文件/文件夹,并获取可以通过电子邮件发送给组织内某人的URL.
我希望对话框中显示的URL也放在剪贴板上.
Zor*_*che 27
我发现的另一个解决方案在我看来并不完美,但没有恼人的安全警告是使用来自w2k3服务器的clip.exe.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c echo hello world | clip", 0, TRUE
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Zor*_*che 10
到目前为止我找到的最接近的解决方案是使用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
Run Code Online (Sandbox Code Playgroud)
http://www.microsoft.com/technet/scriptcenter/resources/qanda/dec04/hey1215.mspx
小智 10
使用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
Run Code Online (Sandbox Code Playgroud)
如果您需要等待剪辑完成,然后脚本才能继续处理,然后添加
' loop until we're finished working.
Do While oExec.Status = 0
WScript.Sleep 100
Loop
Run Code Online (Sandbox Code Playgroud)
并且不要忘记释放您的对象
Set oIn = Nothing
Set oExec = Nothing
Run Code Online (Sandbox Code Playgroud)
为避免与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
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关MS Word应用程序对象及其方法的详细信息:http://msdn.microsoft.com/en-us/library/aa221371(office.11).aspx
没有安全警告,完全允许和获取访问权限:
'create a clipboard thing
Dim ClipBoard
Set Clipboard = New cClipBoard
ClipBoard.Clear
ClipBoard.Data = "Test"
Class cClipBoard
Private objHTML
Private Sub Class_Initialize
Set objHTML = CreateObject("htmlfile")
End Sub
Public Sub Clear()
objHTML.ParentWindow.ClipboardData.ClearData()
End Sub
Public Property Let Data(Value)
objHTML.ParentWindow.ClipboardData.SetData "Text" , Value
End Property
Public Property Get Data()
Data = objHTML.ParentWindow.ClipboardData.GetData("Text")
End Property
Private Sub Class_Terminate
Set objHTML = Nothing
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
示例用法。
' Create scripting object
Dim WShell, lRunUninstall
Set WShell = CreateObject("WScript.Shell")
WShell.sendkeys "^c"
WScript.Sleep 250
bWindowFound = WShell.AppActivate("Microsoft Excel")
WShell.sendkeys ClipBoard.Data
Run Code Online (Sandbox Code Playgroud)
小智 5
这是使用"clip"命令的另一个版本,它避免了在字符串末尾添加回车符,换行符:
strA= "some character string"
Run Code Online (Sandbox Code Playgroud)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /C echo . | set /p x=" & strA & "| c:\clip.exe", 2
Run Code Online (Sandbox Code Playgroud)
s = "String: """ & strA & """ is on the clipboard."
Wscript.Echo s
Run Code Online (Sandbox Code Playgroud)
我只在XP中测试过这个.clip.exe从http://www.petri.co.il/downloads/clip.zip下载并放在C:\中.
| 归档时间: |
|
| 查看次数: |
55569 次 |
| 最近记录: |