VBS 为什么用.href获得的vbs字符串操作为空,比如URL = ie.document.getElem

6009人阅读
&&& 前段时间一个小的应用,需要整理大量的日志文件,最后需要将整理结果存入Excel,考虑到仅是在Windows下的一个小东西,隧打算用vbs脚本实现,将其中遇到的问题整理一下,以备以后查查,也希望能帮到小盆友,也欢迎大盆友来指点。
&&& 遇到的第一个问题是vbs没有界面,如果使用cscript,勉强算有个字符界面,可是对于用习惯了windows的那些同事,觉得字符不好玩,尽管我解释说图形上其实也没显示什么,和字符界面显示的一样,也就是能看到一个进度条和日志而已,最后我屈服了,那就给你图形吧。。。
&&& 以前有这么点概念,vbs可以操作IE当做自身界面,大概思路是,取得IE对象,然后边在后台执行逻辑,边填充界面
Set ie=WScript.CreateObject("InternetExplorer.Application", "event_")
&&& 这样便可以创建一个带事件响应的IE对象,这样在处理过程中可以捕获IE的事件,比如不小心关了,第二个参数event_可以随便写,但要与一会儿看到的事件处理函数,
&&& 别的一些属性如取消地址栏和状态栏,大家一看就明白了,关键是如何把IE的界面设置成自己的,而且去控制它,根据msdn上的解释,ie对象的navigate是可以载入本地文件的,这样方便先在本地html中定义好界面,再载入,无奈我都以失败而告终,最后尝试出曲线救国的方法:将ie对象的documet.body.innerHTML的源改变,这样模拟载入本地文件(innerHTML的内容从文件中读,文章中的例子是放在progress文件中的),下面的代码片中是这句
Window.document.body.innerHTML=fso.OpenTextFile(pDir & "progress",1).ReadAll
得到里面的空间就用Window.document.all("id"),这样就得到了ie对象中id为id的元素,想怎么用都行,只要脚本支持,csdn给出的属性/方法说明见参考资料
废话不多说,上代码:
pDir=Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"/"))
Set fso=CreateObject("Scripting.filesystemobject")
Dim Window,IE_Exit
Set Window=createWindow(800,600)
WScript.Echo "script end"
'创建IE对象
Function createWindow(width,height)
Set ie=WScript.CreateObject("InternetExplorer.Application", "event_")
ie.Toolbar=False
ie.Statusbar=False
ie.navigate("about:blank")
screenWidth = ie.document.parentWindow.screen.availWidth
screenHeight = ie.document.parentWindow.screen.availHeight
if width&screenWidth then width=screenWidth
if height&screenHeight then height=screenHeight
ie.Width = width
ie.Height = height
ie.left = Fix((screenWidth - width)/2)
ie.top = Fix((screenHeight - height)/2)
ie.Document.title="这是一个测试"
ie.Visible=True
Set createWindow=ie
End Function
Sub callPro1()
Window.document.body.innerHTML=fso.OpenTextFile(pDir & "progress",1).ReadAll
Window.document.body.bgColor="#f0f0f0"
On Error Resume Next
For i=1 To 100
Window.document.all("myP").width=i & "%"
Window.document.all("mynumber").innerHTML=i & "%"
Window.document.all("console").insertAdjacentHTML "beforeEnd","&font color=""#ff0000""&这是行&/font&&font color=""#875432""&" & i & "&/font& hahaha~&BR&"
Window.document.all("console").scrollIntoView(true)
Window.document.all("console").scrollTop=Window.document.all("console").scrollHeight
WScript.Sleep 50
On Error Goto 0
'等待IE装载完成
Sub waitIE(Byref objIE)
WScript.Sleep 100
Loop While objIE.ReadyState&&4
'IE退出事件
sub event_onQuit
MsgBox "窗口已关闭,处理终止",vbCritical
WScript.Quit
看到sub&event_onQuit&函数了,这里的event_就是对应创建ie对象时的第二个参数&
其中progress文件内容如下,和上述脚本放在同级目录下:
&table border='0' width='100%'&
&tr width="100%"&
&td width='90%' height="100%"&
&table border='1' width='100%' height="100%" bgcolor="#cbcbcb" cellspacing='0' style="border-top:1px solid #4f7fc9;border-left:1px solid #4f7fc9;border-right:0border-bottom:0" mce_style="border-top:1px solid #4f7fc9;border-left:1px solid #4f7fc9;border-right:0border-bottom:0"&
&table name="myP" id="myP" border='0' height='100%' width='0%' bgcolor='#29ed0e'&
&td width='100%' height="100%" align="right"&
&td width='10%'&
&font color='#000000' size='5'&&span name="mynumber" id="mynumber"&1%&/span&&/font&
&p&程序日志:
&div id="console" name="console" style="margin-top:1position:width:90%;height:300overflow:border:1background-color:"&&div&
运行效果如下:
&&& 这样,一个简单的脚本操作ie,伪装自己是个界面的程序也像点人样了,但细心的盆友肯定发现了,这样脚本跑完就退出了,甚至是脚本一开始就直接去操作IE了,如果在这之前,我想先在界面上操作一些东西,比如设置,再将控制权交给脚本,脚本操作结束了,也不要直接退出,而是将控制权交给用户,由用户决定下一步怎么做,这样的奢求在图形化的语言中易如反掌啊,可这是个脚本,偏偏我选择了它,不过这样的要求还是有解决办法的,想见vbs和IE(二)
PS:兼容性,在几个同事机器上试了试,xp/win7 ie7/ie8,除了一位同事xp/ie8爆无法连接ie对象,其余正常,包括默认浏览器为chrome的
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47574次
排名:千里之外
评论:27条
(2)(1)(2)(4) 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
WEB编程开发常用的代码
下载积分:1000
内容提示:WEB编程开发常用的代码
文档格式:DOC|
浏览次数:8|
上传日期: 19:55:28|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
WEB编程开发常用的代码
官方公共微信用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
字体:[ ] 类型:转载 时间:
问: 嗨,Scripting&Guy!我如何从剪贴板中抓取一个&URL&然后在浏览器中打开该&Web&站点? --&CL 答: 您好,CL。这是很有趣的问题,或者我们应当说,这是两个很有趣的问题。因为您实际上问了两个问题。第一个问题很简单:我可以使用脚本打开特定的&Web&站点吗?您大概已经知道答案了,我可以大声地回答您,可以!下面是一个示例脚本,它将“脚本中心”的&URL&存储在一个名为&strURL&的变量中。然后,此脚本会创建&WSH&Shell&对象的一个实例,并使用&Run&方法来打开默认的&Web&浏览器并导航到指定的&URL:& 代码如下:strURL&=&“/technet/scriptcenter/default.mspx”& Set&objShell&=&CreateObject("Wscript.Shell")& objShell.Run(strURL) 第二个问题有点棘手:我可以使用脚本从剪贴板中抓取信息吗?这个问题的答案也是“可以”,尽管您必须通过后门程序到达剪贴板。& WSH&和&VBScript&都不能与剪贴板进行交互:它们都不允许您将数据复制到剪贴板或从剪贴板粘贴数据。另一方面,Internet&Explorer&却可以和剪贴板进行交互。(瞧,Internet&Explorer&真是无所不能啊!)所以,就让&IE&来为我们做这项工作吧。如果您想从剪贴板抓取数据,您可以使用与以下代码类似的代码: Set&objIE&=&CreateObject("InternetExplorer.Application") objIE.Navigate("about:blank") strURL&=&objIE.document.parentwindow.clipboardData.GetData("text") objIE.Quit Wscript.Echo&strURL 这里,我们所做的事情就是:创建&Internet&Explorer&的一个实例,并在一个空白页中将其打开。请注意,您实际上并不能看到此&IE&实例,因为我们并没有将&Visible&属性设置为&TRUE。所有的事情都是在后台发生的。 然后,我们使用&clipboardData.GetData&方法来获取放置在剪贴板上的文本并将其存储在变量&strURL&中;这也就是下面这行代码所做的工作: strURL&=&objIE.document.parentwindow.clipboardData.GetData("text") 我们关闭此&IE&实例&(objIE.Quit),然后回显我们从剪贴板检索出来的值。 请做以下尝试:将一些文本复制到剪贴板,然后运行该脚本。您应当会得到一个消息框,其中包含您刚才复制到剪贴板的文本。 现在就剩下一件事情要做:将这两半段脚本合在一起构成一个完整的脚本。下面这个脚本就可以从剪贴板中抓取一个&URL&然后在默认的&Web&浏览器中打开该&Web&站点: Set&objIE&=&CreateObject("InternetExplorer.Application") objIE.Navigate("about:blank") strURL&=&objIE.document.parentwindow.clipboardData.GetData("text") objIE.Quit Set&objShell&=&CreateObject("Wscript.Shell") objShell.Run(strURL) 这个脚本还不赖吧。它还有一个优点&—&它并不是只能用来打开&Web&站点。假定您的剪贴板上有一个文件路径,例如“C:\Scripts\ScriptLog.txt”。运行此脚本,则该文件将在记事本(或任何您设置为与&.txt&文件相关联的应用程序)中打开。如果您的剪贴板上有一个&.doc&文件的路径,则此脚本将在&Microsoft&Word&中打开该文档。它实际上是一个通用的文件打开脚本,而不仅仅是一个只能用于&Web&站点的打开脚本。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 vbs字符串比较 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信