pb中嵌入IE浏览器控件相关技术收集

pb中怎么通过嵌入ole来控制Ie浏览器控件?

打开某个网页:
ole_1.object.Navigate("http://www.sound-net.com", '', '', '', '')

当然如果你要做更加复杂的工作,这些是不够的
---------------------------------------------------------------
如果你对javascript,dhtml熟悉的话,对下边很容易理解:

通过pb中的browser 可以看到浏览器控件中有个对象ole_1.object.document.相当于网页中的document对象,由此可以在pb中得到和操纵许多document的属性,甚至还可以利用Document.parentWindow得到一些window对象的属性,

例如:
ole_1.object.Document.parentWindow.image2.value
如果要触发某个控件(id 为image4)的click事件
ole_1.object.Document.parentWindow.image4.click()

ole_1.object.document.forms.length 来得到有几个form
ole_1.object.document.forms[0].name  得到名称
ole_1.object.document.forms[0].submit() 根据名称提交
ole_1.object.document.forms[i].Submit.click()

遍历font的tag:
oleobject ole_all,ole_font
ole_all=  ole_1.object.document.body.all
ole_font =ole_all.tags("FONT")
messagebox("",integer(ole_font.length))

改变网页背景色:
ole_1.object.Document.body.background=""
ole_1.object.Document.body.bgcolor=rgb(rand(255),rand(255),rand(255))

得到网页源码
ls = ole_1.object.document.documentElement.outerHTML

前进,后退:
ole_1.object.GoBack()
ole_1.object.GoForward()
或者:
ole_1.object.document.parentWindow.history.back()
ole_1.object.document.parentWindow.history.forward()

怎么相应点击网页的事件?

在clicked事件中加入:
ls_tagName=ole_1.object.document.activeElement.tagName

if upper(trim(ls_tagName))="A" then  //同理可以对INPUT等响应
ls_name = ole_1.object.document.activeElement.id
ls_a=ole_1.object.Document.activeElement.href
//然后在这里根据链接的id或者href choosecase
CHOOSE CASE ls_name
CASE "A_test"
//do something
   END CHOOSE
end if

怎么查找网页中document对象属性?
  
最好的办法就是用我们的pb8,新建web target,加入并且打开一个网页,在左边tab页选中page-〉client side,从树中就可以查到网页中document对象的属性方法,直接copy下来修改修改就可以用了。

//===================================================================

百度:
输入搜索
ole_webBrowser.object.Document.GetElementById("kw").InnerText ="youzhi1007"
点击按钮
ole_webBrowser.object.Document.GetElementById("sb").click

google
ole_webBrowser.object.Document.GetElementsByName("q").item(0).SetAttribute("value", "youzhi1007")
ole_webBrowser.object.Document.GetElementsByname("btnG").item(0).click

PowerBuilder与嵌入浏览器交互

准备工作
1. 新增一个Application应用,新增一个窗口。
2. 在窗口中新增一个OLE控件:Microsoft Web Browser,命名为old_1。
3. 新增一个TextBox网址输入控件,命名为sle_url,初始值为c:\temp\index.html。
4. 新增一个Button控件,命名为cb_go,clicked代码如下:

ole_1.object.Navigate(sle_url.text)

5. 新增文件c:\temp\index.html,内容如下:

复制代码

 
  1. <script language="javascript">

  2. function sayhello(msg)

  3. {

  4. alert(msg);

  5. }

  6. </script>

  7. This is a PowerBuilder test page.<br />

  8. Your name: <span id="user_name">Ultra Man</span><br />

  9. <a id="say_hello" onclick="javascript:sayhello('I am web browser');">Say Hello</a><br />

  10. <a id="www_link" href="http://192.168.14.155">http://192.168.14.155</a><br />

复制代码

PB如何调用网页中的脚本?
1. 在窗口中新增一个Button按钮:Invoke Javascript,代码如下:

ole_1.object.document.parentWindow.sayhello("1122")

2. 注意这里的大小写问题。JS区分大小写,PB不区分大小写,PB调用时将函数全部转化成了小写。假设JS中的函数是sayHello(),PB调用方式原则上应该也是sayHello(),但PB实际上在执行时转换成了全部小写sayhello(),这样JS在实际执行时就找不到sayhello()这个函数。所以,要想在PB中调用的JS函数应该全部都用小写作为函数名。


PB如何获取网页元素?
1. 在窗口中新增一个Button按钮:Fetch User Name,代码如下:

messagebox('', string(ole_1.object.Document.GetElementById("user_name").InnerText))

PB如何修改网页元素的属性?
1. 在窗口中新增一个Button按钮:Change User Name,代码如下:

ole_1.object.Document.GetElementById("user_name").InnerText = 'Super Man'

PB如何调用网页元素的事件?
1. 在窗口中新增一个Button按钮:Click Link,代码如下:

ole_1.object.Document.GetElementById("say_hello").Click()

PB如何响应网页中的Click事件?
1. 在ole_1的clicked事件中写入如下代码:

复制代码

 
  1. string ls_tagName, ls_id, ls_href

  2. ls_tagName=ole_1.object.document.activeElement.tagName

  3. if upper(trim(ls_tagName))="A" then

  4. ls_id = ole_1.object.document.activeElement.id

  5. ls_href =ole_1.object.Document.activeElement.href

  6. messagebox('', ls_tagName + '/' + ls_id + '/' + ls_href)

  7. ole_1.object.Navigate(ls_href)

  8. end if

复制代码

2. 当在网页中点击链接时,事件处理就会传到ole_1.clicked。


参考资料:
1. 如流,新一代智能工作平台
2. http://apps.hi.baidu.com/share/detail/2832257

如何在PB中调用 Microsoft WEB 浏览器 控件?

PB中使用Microsoft Web Browser控件步骤:


在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。

常用函数:(对这个ole控件取名叫ole_web)
ole_web.object.navigate(string ls_url) file://浏览某url,

    譬如:ole_web.object.navigate('http://liulee.myrice.com') 就是浏览 http://liulee.myrice.com 页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。
ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)
ole_web.object.goforward() file://前进,同上
常用事件:
documentcomplete : url请求的页面完成;

downloadcomplete:url中请求的下载完成;

常用属性:
ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整
ole_web.object.height:同上

ole_web.object.offline:离线方式,true,false两者之一

你甚至可以用pb写出一个和ie类似的界面用来进行浏览网页或图片。

指定Webbrowser控件所用IE内核版本

如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容。解决方法是在注册表中为你的进程指定引用IE的版本号。

比如我的程序叫做a.exe

对于32位程序

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

对于64位程序

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

在对应的路径下添加你程序名字,如a.exe为名的value,DWORD值。

值选项:

11000(0×2af8)    IE11
10000(0×2710)    IE10
9999 (0x270F)     IE9 忽略html5
9000 (0×2328)    IE9
8888 (0x22B8)     IE8 忽略html5
8000 (0x1F40)     IE8
7000 (0x1B58)     IE7
————————————————
版权声明:本文为CSDN博主「jiangqin115」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangqin115/article/details/41868731

转自 http://blog.csdn.net/harbinzju/article/details/9197589

B中使用Microsoft Web Browser控件

在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。

常用函数:(对这个ole控件取名叫ole_web)
ole_web.object.navigate(string ls_url) file://浏览某url,

    譬如:ole_web.object.navigate('http://www.sina.com) 就是浏览新浪的页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。
ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)
ole_web.object.goforward() file://前进,同上
常用事件:
documentcomplete : url请求的页面完成;

downloadcomplete:url中请求的下载完成;

常用属性:
ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整
ole_web.object.height:同上

ole_web.object.offline:离线方式,true,false两者之一

你甚至可以用pb写出一个和ie类似的界面用来进行浏览网页或图片。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值