vbs和IE(一)

来源:互联网 发布:华为算法工程师待遇 编辑:程序博客网 时间:2024/05/26 22:58

    前段时间一个小的应用,需要整理大量的日志文件,最后需要将整理结果存入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给出的属性/方法说明见参考资料

废话不多说,上代码:

  

看到sub event_onQuit 函数了,这里的event_就是对应创建ie对象时的第二个参数 

其中progress文件内容如下,和上述脚本放在同级目录下:

运行效果如下:

 

    这样,一个简单的脚本操作ie,伪装自己是个界面的程序也像点人样了,但细心的盆友肯定发现了,这样脚本跑完就退出了,甚至是脚本一开始就直接去操作IE了,如果在这之前,我想先在界面上操作一些东西,比如设置,再将控制权交给脚本,脚本操作结束了,也不要直接退出,而是将控制权交给用户,由用户决定下一步怎么做,这样的奢求在图形化的语言中易如反掌啊,可这是个脚本,偏偏我选择了它,不过这样的要求还是有解决办法的,想见vbs和IE(二)

 

参考:http://msdn.microsoft.com/en-us/library/aa752084(VS.85).aspx

 

PS:兼容性,在几个同事机器上试了试,xp/win7 ie7/ie8,除了一位同事xp/ie8爆无法连接ie对象,其余正常,包括默认浏览器为chrome的

原创粉丝点击