[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理、VBS剪贴板操作专题

一、命令行工具:
winclip.exe
http://www.bathome.net/thread-1766-1-1.html
nircmd
http://www.nirsoft.net/utils/nircmd.html

二、系统组件的clipboardData对象:
1、InternetExplorer.Application
2、htmlfile、xmlfile、mhtmlfile(也是一种Automation Com组件,类似上面的;而不是网页文件,注意没有点哦)
3、mshta(也是利用DOM)

event对象的dataTransfer对象也有clearData、getData、setData这些方法

Maxthon、TheWorld、GreenBrowser、腾讯TT等IE核心的浏览器如果已经运行了,会劫持脚本对InternetExplorer.Application对象的调用,可能会因此出错

1、读取剪贴板中的文本
  1. Set oIE = CreateObject("InternetExplorer.Application")
  2. oIE.Navigate "about:blank"
  3. Do Until oIE.readyState=4 : WScript.Sleep 200 : Loop 'complete
  4. clipboardText = oIE.document.parentWindow.clipboardData.getData("text")
  5. WScript.Echo clipboardText
  6. oIE.Quit
复制代码
  1. Set oDOM = CreateObject("htmlfile") 'xmlfile、mhtmlfile都可以
  2. clipboardText = oDOM.parentWindow.clipboardData.getData("text")
  3. WScript.Echo clipboardText
复制代码
  1. 'Set oDOM = GetObject("about:blank", "htmlfile") '灾难性故障?
  2. Set oDOM = GetObject("\", "htmlfile") '随便用个什么文件名,不管是否存在,一定要是本地路径(C:\bathome或\boot.ini之类的)
  3. 'WScript.Echo oDOM.readyState
  4. Do Until oDOM.readyState="complete" : WScript.Sleep 200 : Loop 'complete
  5. 'WScript.echo oDOM.documentElement.outerHTML
  6. clipboardText = oDOM.parentWindow.clipboardData.getData("text")
  7. WScript.Echo clipboardText
复制代码
  1. mshta.exe "javascript:s=clipboardData.getData('text');alert(s);close();"
复制代码
DOM组件可能受到系统的安全限制,不能往剪贴板写数据(包括清空),只能读取
IE7及以上版本据说写操作时也会出现安全提示框


2、将文本写到剪贴板
  1. Set oIE = CreateObject("InternetExplorer.Application")
  2. oIE.Navigate "about:blank"
  3. Do Until oIE.readyState=4 : WScript.Sleep 200 : Loop 'complete
  4. strText = "www.bathome.net"
  5. oIE.document.parentWindow.clipboardData.setData "text", strText
  6. oIE.Quit
复制代码
  1. mshta.exe "javascript:clipboardData.setData('text', 'www.bathome.net');close();"
复制代码
  1. Set ws = CreateObject("WScript.Shell")
  2. ws.run "mshta ""javascript:clipboardData.setData('text', 'www.bathome.net');close();""", 0, true
  3. '最好设置等待标志为true,等待操作完成,保证后续语句能得到正确结果
  4. WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")
复制代码
3、清空剪贴板
  1. Set oIE = CreateObject("InternetExplorer.Application")
  2. oIE.Navigate "about:blank"
  3. Do Until oIE.readyState=4 : WScript.Sleep 200 : Loop 'complete
  4. oIE.document.parentWindow.clipboardData.clearData
  5. oIE.Quit
复制代码
  1. mshta.exe "javascript:clipboardData.clearData();close();"
复制代码
  1. Set ws = CreateObject("WScript.Shell")
  2. ws.run "mshta javascript:clipboardData.clearData();close();", 0, true
复制代码
2

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

麻烦 高老师 看下这个:
http://www.bathome.net/viewthrea ... mp;page=1#pid128902

TOP

回复 14# rat


    还是会闪,就算用WScript.Shell的run隐藏运行也一样。

TOP

rat你这家伙也知道回来。。。
***共同提高***

TOP

mshta.exe会造成屏幕闪烁一次,给人感觉不爽。

先调用moveTo到屏幕外就不会了!

TOP

回复 7# pdanniel66


如果你要一切自动化呢?
有或者 你要 复制剪贴板内容中内容 却不想用户动手呢?

TOP

学习了,有没有html格式到剪贴板的例子呢

TOP

学习

学习学习了!!!!!!!!

TOP

这两个都要依赖office,不太感冒,特别是word太大了。
以前用过Forms.Form.1,发现写剪贴板有时不成功,经测试这个控件好像是异步的,如果宿主程序过早退出,这个对象还没有完成操作就被销毁了。解决方法是TextBox.Copy之后用WScript.Sleep方法延时一段时间。

mshta.exe会造成屏幕闪烁一次,给人感觉不爽。有clip.exe的系统可用如下代码:
  1. Set ws = CreateObject("WScript.Shell")
  2. YourText = chr(34) & "a" & vbCrLf & "'b"
  3. ws.Environment("process").item("@") = vbCrLf & YourText
  4. ws.run "cmd.exe /d /c set @|more +1|clip.exe", 0, true
  5. WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")
复制代码
还是通过环境变量,会在文本末尾添加额外的空行(而且more会转换tab符为空格)。
当然如果文本简单,直接用echo或set/p就行了。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

补充
使用Word(好像必须是常规安装的word,绿色版、精简版没有注册此组件)
  1. '设置剪切板的内容
  2. Set Word = CreateObject("Word.Application")
  3. Word.Documents.Add
  4. Word.Selection.Text = "www.bathome.net"
  5. Word.Selection.Copy
  6. Word.Quit
复制代码
  1. '获取剪切板的内容
  2. Set Word = CreateObject("Word.Application")
  3. Word.Documents.Add
  4. Word.Selection.PasteAndFormat(22)
  5. Word.Selection.WholeStory
  6. str = Word.Selection.Text
  7. Word.Quit
  8. WScript.Echo str
复制代码
使用Microsoft Forms 2.0 Object Library(FM20.DLL),此组件好像也是office的一部分
  1. '设置剪切板的内容
  2. Set Form = CreateObject("Forms.Form.1")
  3. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  4. TextBox.MultiLine = True
  5. TextBox.Text = "www.bathome.net"
  6. TextBox.SelStart = 0
  7. TextBox.SelLength = TextBox.TextLength
  8. TextBox.Copy
复制代码
  1. Set Form = CreateObject("Forms.Form.1")
  2. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  3. TextBox.MultiLine = True
  4. If TextBox.CanPaste Then
  5.     TextBox.Paste
  6.     WScript.Echo TextBox.Text
  7. End If
复制代码

TOP

  1. Set ws = CreateObject("WScript.Shell")
  2. ws.run "mshta ""javascript:clipboardData.setData('text', 'www.bathome.net');close();""", 0, true
  3. '最好设置等待标志为true,等待操作完成,保证后续语句能得到正确结果
  4. WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")
复制代码

这里设置的是“www.bathome.net”这种简单文本,如果文本太复杂,比如有特殊字符、换行等,则最好通过环境变量传递数据。
  1. Set ws = CreateObject("WScript.Shell")
  2. ws.Environment("process").item("@") = chr(34) & "a" & vbCrLf & "'b"
  3. ws.run "mshta ""javascript:clipboardData.setData('text', new ActiveXObject('WScript.Shell').Environment('process').item('@'));close();""", 0, true
  4. WScript.Echo CreateObject("htmlfile").parentWindow.clipboardData.getData("text")
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

不了解Clip的应用范例为何? 直接 copy 过去不是可以吗 ?
為何需透過剪贴板 ?

TOP

楼主太好了,乐于助人

TOP

回复 1楼 的帖子

将文本写到剪贴板是不是第三个代码最好?因为它true,就不怕文本长度影响?

TOP

相关帖子

批处理保存剪贴板信息
http://bbs.bathome.net/thread-7156-1-1.html

批处理将剪贴板中的内容保存为文件
http://bbs.bathome.net/thread-2875-1-1.html

批处理中如何将剪贴板里的文本赋给变量?
http://bbs.bathome.net/thread-7467-1-1.html

批处理如何清除剪贴板內容?
http://bbs.bathome.net/thread-3942-1-1.html

批处理怎样把需要的字符复制到windows剪贴板?
http://bbs.bathome.net/thread-2421-1-1.html

批处理结合VBS获取屏幕大小以及剪贴板内容
http://bbs.bathome.net/thread-7162-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表