初探WebBrowser

先前文章中有写到控制B/S程序的问题,后来研究了三种解决方案:

1 .Javascript 跨页面操作
方法:
利用Javascript: window.open()打开条线系统,父窗口可以以opener的身份完全控制被打开(open)的窗口,包括获取数据和设置数据,在本地测试成功。
       问题:
              Javascript和iframe不支持跨域操作,无法操作非本机页面(回提示:拒绝访问。)
       设想解决的方法:
l         修改父页面的域名(document.domain),使其与条线的域相同,可是用js去取条线页面的DOMAIN时发现为空,难道也是跨域的问题,准备尝试一些黑客软件截取其信息。
l         发现浏览的自动填表功能获取和设置页面中控件的内容,但是自动填表是浏览器本身的功能,HTML页面也是浏览器去解析的,他们之间有什么样的关系还需要去进一步研究
 
2. WScript 或Win32 API +  远程登陆
       方法:
用户端选择一办事项后,远程登陆到服务器,然后根据用户的选择,使用WScript或Win32 API模拟键盘和鼠标操作,登陆到条线,并使其跳转到相应操作页面,输入数据。
       问题:
l         数据可以进去,可是怎么取出来,WIN32 API取不到IE页面里的控件。
l         如果能取到,怎么像C/S系统一样去判断某个页面是否加载完毕?
       设想解决的方法:
l         再做一些API的尝试
l         用WScript行不行?
 
3 .向条线系统POST 数据
       方法:
在内部处理中模仿条线系统的页面构造表单,并将数据POST到条线表单本身POST的处理页面。做到数据的传送。
       问题:
l         能够保证条线没个页面都是表单POST方法操作数据的?
l         POST过去后,页面势必会跳转到条线系统的页面,又跨域了,无法得到数据。
l         若条线页面中不只是一个表单,还存在其他控件或Session和Cookies怎么办?
设想解决的方法:
利用xmlObject,类似于Ajax的方法是否能得到POST后的ResponseText?如果可以,就能从返回的页面中分析出数据。
 

后来经过一定的尝试,以上的方法都被CANCEL掉了,幸运的是无意中发现了WebBrowser,好东西啊,是MS用来做浏览器相关的ActiveX控件,看了一些介绍发现它的功能已经能基本满足我的需求,于是便着手研究起来。第一次做AxtiveX方面的东西,有很多不理解的东西,然后又结合到了MSHTML,COM的东西就是晕乎,属性名字都太有个性了:IHTMLDocument,IHTMLDocument2,IHTMLDocument3,IHTMLDocument4。。。太难区分了,还好只有到4,否则。。呵呵,不过经过2天的开发,还是能掌控它的。现在就是碰到一个问题,当我用WB打开一个页面时要去捕捉它的DocumentCompleted事件,然后再去做相应操作,可现实的情况是页面很快就展现了出来,可是页面中引用了许多其他有用没用的JS文件,那些JS文件加载速度非常慢,导致要等很久才能出发DocumentCompleted事件,浪费很多时间!(因为我只要对它页面的一部分进行操作,而且是与那些JS无关的),那我应该怎么去准确的判断我要的那部分已经加载完毕了呢?用ProcessChanged去估算?现在是这么打算的,当Process达到一定数字时就去做我的操作,可这安全吗?

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值