在PowerBuilder(PB)11.5中,调用Microsoft Web浏览器控件是一个常见的需求,尤其是在开发集成Web功能的应用程序时。这个过程涉及到利用ActiveX技术将Internet Explorer(IE)内核嵌入到PB应用程序中,使用户能够在不离开主应用界面的情况下浏览网页。
我们需要了解PowerBuilder中的ActiveX对象。PB支持通过ActiveX接口与其他应用程序进行交互,Microsoft Web浏览器控件就是一个典型的ActiveX组件。在PB中,你可以通过创建一个OLE容器对象来承载这个控件。步骤如下:
1. **添加OLE容器对象**:在PowerBuilder的窗口或对话框对象中,从对象库选择“OLE Container”并将其拖放到设计区域。
2. **初始化OLE容器**:在窗口或对话框的Open事件中,你需要对OLE容器对象进行初始化,例如:
```pb
ole_object = Create ole_object
ole_object.Object.ConnectToNewObject("Shell.Explorer.2")
```
这里的"Shell.Explorer.2"是Microsoft Web浏览器控件的类ID,用于创建一个新的IE实例。
3. **设置Web浏览器控件属性**:你可以通过OLE对象访问Web浏览器控件的属性来控制其行为。例如,设置初始URL:
```pb
ole_object.Object.LocationURL = "http://www.example.com"
```
4. **事件处理**:PB允许你捕获和处理Web浏览器控件的事件,如`BeforeNavigate2`、`DocumentComplete`等,以便在用户浏览网页时进行交互或响应。例如,你可以监听`DocumentComplete`事件来知道页面加载完成:
```pb
Handle ole_object As OleControlEvents
...
ole_object.DocumentComplete()
{
// 页面加载完成后执行的代码
}
```
5. **交互与脚本**:除了基本的导航,你还可以通过OLE对象的`Object`属性访问浏览器的HTML文档对象模型(DOM),从而与网页元素进行交互。例如,你可以使用JavaScript执行页面上的某些操作:
```pb
ole_object.Object.Document.parentWindow.execScript("alert('Hello, World!')", "JavaScript")
```
6. **安全与兼容性**:需要注意的是,由于使用了IE内核,可能会受到IE的安全策略和版本限制影响。因此,确保用户的系统已安装了足够的安全更新,并且应用程序配置适应不同的IE安全设置。
7. **调试与问题解决**:如果遇到问题,如控件无法显示或功能受限,可以检查PB的错误日志,或者使用Windows的OLE/COM对象查看器(OleView.exe)来获取更详细的错误信息。
通过以上步骤,你可以在PowerBuilder 11.5中成功集成并使用Microsoft Web浏览器控件。这个过程可能需要一定的调试和试验,但一旦掌握,就能极大地扩展PB应用程序的功能,提供丰富的Web交互体验。在“webtest”这个示例项目中,可能包含了实现这一功能的具体代码和步骤,你可以参考该项目进一步学习和实践。
1