百度首页 | 百度空间
 
查看文章
 
[UMU WSH 教程](30) 访问剪贴板
2008年07月16日 星期三 19:29

[UMU WSH 教程](25) 控制台输入输出

[UMU WSH 教程](26) 产生 GUID

[UMU WSH 教程](27) 禁用 Guest 帐号

[UMU WSH 教程](28) 产生随机密码

[UMU WSH 教程](29) Tooltip

[注:UMU 只在 Windows Server 2003 SP2 R2 + IE7 + 增强安全配置环境下测试本文的例子]

  有时候仅用 MsgBox 或 WScript.Echo 这类常规的输出方式有点不足,对于一些文本,可能我们希望能在显示的同时,也存入剪贴板。当然 VBS 本身没有操作剪贴板的函数,这个任务还需要依靠 Automation/OLE 对象。

方法一,使用 htmlfile 对象:

  此方法在网络上很容易搜索到,可以显示剪贴板里的文本,可惜在 IE7 的系统环境下无法工作。

' 30_GetClipData_htmlfile.vbs
' UMU @ 19:20 2008-7-16
' 此脚本在装了 IE7 的系统环境下无效

WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")

方法二,使用 InternetExplorer.Application 对象:

  下面代码也是网络上流行的,可以设置剪贴板里的文本,可惜在 IE7 的系统环境下默认会弹出询问框。

' 30_GetClipData_IEA.vbs
' UMU @ 2008-07-16 19:20

Dim objIE


Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
While objIE.Busy
        WScript.Sleep 200
Wend

objIE.document.parentwindow.clipboardData.SetData "text", "UMU WSH 30_SetClipData_IEA.VBS"
MsgBox objIE.document.parentwindow.clipboardData.GetData("text")

objIE.Quit

方法三,使用外部程序 Clip.exe

  以上两个方法在 IE7 下不能工作或者工作得不好,如果是写剪贴板可以考虑调用外部程序 Clip.exe,这个程序是 Windows Server 2003 系统自带的(XP 没有),使用 WSH 的 Run 函数隐藏运行即可:

Dim szBuf

szBuf = InputBox("请输入要存放在剪贴板的文字:", "输入", "UMU WSH 30_SetClipData_ClipEXE.vbs")

If Len(szBuf) Then
        Dim objWSH


        Set objWSH = CreateObject("WScript.Shell")
        objWSH.Run "cmd.exe /c echo " & szBuf & "| clip.exe", vbHide
End If

方法四,使用 Office 对象

  Word 版,读剪贴板:

' 30_GetClipData_Word.vbs
' UMU @ 2008-07-16 20:02

Dim objWord


Set objWord = CreateObject("Word.Application")
'objWord.Visible = True
Set wdDoc = objWord.Documents.Add

objWord.Selection.PasteAndFormat (wdFormatPlainText)
objWord.Selection.WholeStory
strBuf = objWord.Selection.Text

objWord.Quit False
Set objWord = Nothing

WScript.Echo strBuf

  Word 版,写剪贴板:

Dim objWord


Set objWord = CreateObject("Word.Application")
'objWord.Visible = True
Set wdDoc = objWord.Documents.Add

objWord.Selection.Text = "UMU WSH 30_SetClipData_Word.vbs"
objWord.Selection.Copy

objWord.Quit False
Set objWord = Nothing

  用 Excel 也可以,在 Excel 里录制宏研究一下代码就可以了。


类别:wsh 专栏 | 添加到搜藏 | 浏览() | 评论 (2)
 
最近读者:
 
网友评论:
1
2008年07月20日 星期日 03:41
Set objHTML=CreateObject("htmlfile")
ClipboardText=objHTML.ParentWindow.ClipboardData.GetData("text")
MsgBox ClipboardText

在2003+ie7是可以的呀
 
2
2008年07月20日 星期日 11:01
你把增强安全设置给删除了吧?我的系统是 2003SP2R2+IE7+增强安全设置,不行。
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu