标题: 有什么办法使变量获得剪贴板的内容?
[打印本页]
作者: tmt2006
时间: 2006-5-31 16:38
标题: 有什么办法使变量获得剪贴板的内容?
在XP下,有什么办法使变量获得剪贴板的内容(如%TM%的内容为剪贴板的内容)?
仅限文本。
作者: electronixtar
时间: 2006-5-31 18:31
可以用script+DOM实现,具体方法为:
echo wscript.echo CreateObject("InternetExplorer.Application").clipboardData.getData "text" >temp$$$.vbs
cscript temp$$$.vbs
del /f /q temp$$$/vbs
由于我的cscript说class unregistered,所以没测试,可能有bug,但思路就是这样子的。仅供参考。
作者: 3742668
时间: 2006-5-31 20:45
Well,在electronixtar的脚本中,可能存在一点小错:创建了internetexplorer对象后,并没有打开一个实例(允许我用这个我认为最贴切的词),所以就无法调用internetexplorer对象的document.parentwindow.clipboardData子对象的getdata方法,所以可能导致无法正确获得剪贴板内容。
在electronixtar提供的方法中,首先用bat写代码到一vbs脚本,然后在vbs脚本中又调用了IE对象,可谓是山路十八弯,因此,建议楼主尝试用vbs脚本来解决所想解决的问题。关于在vbs中获得剪贴板内容的方法:
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
str = objIE.document.parentwindow.clipboardData.GetData("text")
WScript.Echo str
如果搂主确需用bat来实现的话,可以在用echo把以上代码写到临时文件后,在批处理中用for+cscript //NOLOGO来获得内容到变量中,另外就是建议在vbs中用WScript.StdOut.Write来输出内容。
作者: electronixtar
时间: 2006-9-7 01:57
由于InternetExplorer.Application要影响 Maxthon 等截获IE调用的浏览器,所以一直觉得不爽,最近发现了一个新的COM能方便调用剪贴板:
@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
还是要输出临时文件,效率奇低。什么时候找一个能StdOut的COM就爽了
[
Last edited by electronixtar on 2006-9-7 at 02:01 ]