如何在ActiveX内获取其在HTML中对应的节点对象IHTMLElement2

bingzhu 2015-01-17 08:34:17
我在写用在Internet Explorer的ActiveX控件,现在需要知道这个控件在HTML中对应对象的IHTMLElement2实例,请问有什么办法能获取呢?

我现在能找到的办法是通过IDocumentSelector::querySelector找;但这个方法不能处理一个页面同时存在多个控件的问题。
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2015-01-19
  • 打赏
  • 举报
回复
在ActiveX的SetSite被IE调用之后[用IOleControlSite::GetExtendedControl
bingzhu 2015-01-19
  • 打赏
  • 举报
回复
已经得到答案了,在此非常感谢jiangsheng的解答,也非常感谢CharlesSimonyi的参与;结贴!
bingzhu 2015-01-19
  • 打赏
  • 举报
回复
引用 5 楼 jiangsheng 的回复:
在ActiveX的SetSite被IE调用之后[用IOleControlSite::GetExtendedControl
说的不准确,IObjectWithSite::SetSite并未被调用; 根据您给的线索,我发现在调用IOleObject::SetClientSite之后,通过IOleClientSite查询IOleControlSite接口,再调用IOleControlSite::GetExtendedControl获取到的就是该ActiveX所对应的IHTMLElement2节点。
bingzhu 2015-01-18
  • 打赏
  • 举报
回复
引用 2 楼 CharlesSimonyi 的回复:
ActiveX控件在HTML中是个<object>元素,<object>元素有个classid属性是唯一的,把<object>枚举出来后根据这个来筛选
如果一个页面内多处使用该控件,在ActiveX内部就无法区分自己对应的是哪个。
bingzhu 2015-01-18
  • 打赏
  • 举报
回复
引用 1 楼 jiangsheng 的回复:
加个IDispatch类型的属性再在脚本里吧属性设置为对应元素
这个方法可行。 但每次用这控件的时候都要在脚本中设置一下,这作为产品化的控件这种方法好像不太合适。 您是否还有其他更好的方式?
encoderlee 2015-01-17
  • 打赏
  • 举报
回复
ActiveX控件在HTML中是个<object>元素,<object>元素有个classid属性是唯一的,把<object>枚举出来后根据这个来筛选
蒋晟 2015-01-17
  • 打赏
  • 举报
回复
加个IDispatch类型的属性再在脚本里吧属性设置为对应元素

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧