从脚本如何访问方法 / 属性是容器
MSDN地址:http://support.microsoft.com/kb/188015/zh-cn
概要
当承载 WebBrowser 控件在 VisualC++ 应用程序, 可能需要从 Web页上脚本访问方法或属性的容器。 本文介绍如何通过实现 IDocHostUIHandler 接口操作。
更多信息
通过实现 IDocHostUIHandler 接口, 可以控制众多用户界面功能 WebBrowser 控件宿主应用程序中。 IDocHostUIHandler 使您可以扩展动态 HTML (DHTML) 对象模型来访问方法和属性从脚本中容器。
IDocHostUIHandler GetExternal() 方法提供此功能。 当脚本在 Web页上调用 " window.external.yourMethod, " WebBrowser 控件调用您 GetExternal 方法来检索到宿主应用程序的 IDispatch 指针。 它是通过 this 指针 WebBrowser 控件是能够访问方法和属性。
一旦 WebBrowser 控件有指针指向 IDispatch 的容器, 然后调用 IDispatch::GetIDsOfNames() 以获取 DISPID 的方法或属性从脚本, yourMethod 这里调用。
最后, WebBrowser 控件调用与 DISPID IDispatch::Invoke() 检索从 GetIDsOfNames()。
下面是步骤必须按照来扩展 DHTML 对象模型能够从脚本访问容器的方法和属性:
IDocHostUIHandler GetExternal() 方法提供此功能。 当脚本在 Web页上调用 " window.external.yourMethod, " WebBrowser 控件调用您 GetExternal 方法来检索到宿主应用程序的 IDispatch 指针。 它是通过 this 指针 WebBrowser 控件是能够访问方法和属性。
一旦 WebBrowser 控件有指针指向 IDispatch 的容器, 然后调用 IDispatch::GetIDsOfNames() 以获取 DISPID 的方法或属性从脚本, yourMethod 这里调用。
最后, WebBrowser 控件调用与 DISPID IDispatch::Invoke() 检索从 GetIDsOfNames()。
下面是步骤必须按照来扩展 DHTML 对象模型能够从脚本访问容器的方法和属性:
1. | 实现 IDocHostUIHandler。 |
2. | 实现 IDocHostUIHandler::GetExternal 方法。 IDispatch 参数以与您容器这样设置:
|
3. | 从 GetIDsOfNames 返回调度 ID (DISPID) 是您方法或属性。 如果添加方法或属性使用向导, 这将完成了。 |
4. | DISPID 是您方法或您实现 IDispatch:: Invoke 中属性实现这样:
|
5. | 调用方法或属性的容器从脚本所示:
|
参考
有关本文, 讨论技术请转到有关高级托管接口和 MSDN 联机 WebWorkshop 中 IDocHostUIHandler 文档:
http://msdn.microsoft.com/workshop/ (http://msdn.microsoft.com/workshop/)
(c) Microsoft Corporation 1998, 保留所有权利。 由 Scott, Roberts MicrosoftCorporation 供稿
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了