求救:
3个关于IE Explorer band(注册为了CATID_InfoBand组件类型)的问题(分不够再开贴加!已经查了几天的资料都没解决)1。用ATL写的一个ExplorerBand(注册为CATID_InfoBand组件类型),启动IE显示该band,再关闭IE,第二次再启动IE则创建并且显示该band,如何使IE每次启动都不创建该band也不显示了?2。该band在注册表中HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser\{CLSID}的值为0101e4000000是什么意思了?3。通过IE的IWebBrowser接口的ShowBrowser方法可以show/hide某个ExplorerBand。但是得到IE的IWebBrowser,Idocument等等接口有没有办法获得当前IE是否显示了某个ExplorerBand(CATID_InfoBand),并且得到ExplorerBand的相关的接口或者是Explorerband的窗口句柄了?
查了半天的资料都没解决,希望大家多帮帮忙!先谢谢了!
3个关于IE Explorer band(注册为了CATID_InfoBand组件类型)的问题(分不够再开贴加!已经查了几天的资料都没解决)1。用ATL写的一个ExplorerBand(注册为CATID_InfoBand组件类型),启动IE显示该band,再关闭IE,第二次再启动IE则创建并且显示该band,如何使IE每次启动都不创建该band也不显示了?2。该band在注册表中HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser\{CLSID}的值为0101e4000000是什么意思了?3。通过IE的IWebBrowser接口的ShowBrowser方法可以show/hide某个ExplorerBand。但是得到IE的IWebBrowser,Idocument等等接口有没有办法获得当前IE是否显示了某个ExplorerBand(CATID_InfoBand),并且得到ExplorerBand的相关的接口或者是Explorerband的窗口句柄了?
查了半天的资料都没解决,希望大家多帮帮忙!先谢谢了!
解决方案 »
- 用什么给硬件设备开发人机界面?
- 请问怎么给窗口中的按钮发送按下的消息,以模拟点击功能
- 问一个很菜的问题,在线等待!是关于(String Table的)高手给予解答!
- 为什么,在线程中无法调用注册为com+的组件
- 这是什么意思: LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
- MFC MDI CFileView如何与Docment绑定
- Combobox输入字符怎样得到输入的字符?
- 一个关于子窗体的问题!
- 深入浅出MFC遇到的问题 (很菜的问题)
- ??????????能否运行时动态生成多个CWinThread的子类对象??????????????
- 生成的 exe文件可不可直接给别认用??
- ado 与odbc比,哪个更快?
你的BAND退出之前修改就可以,写了哪个注册表用REGMON跟踪一下。
第三个问题和第一个其实是一样的,你切换到哪个BAND,IE是立即将该栏的信息保存,可能是写到注册表,BAND可能是IE自带的,也可能是第三方的,你能研究出IE信息如何保存就可以知道这些东东了
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser\ITBarLayout中,不过是一个很大的数据结构,其中每次显示band的时候会写入band的clsid到该结构中某处,如:
11,00,00,00,5c,00,00,00,00,00,00,00,34,00,00,00,1f,00,00,00,\
52,00,00,00,01,00,00,00,20,07,00,00,a0,0f,00,00,05,00,00,00,62,05,00,00,26,\
00,00,00,02,00,00,00,21,07,00,00,a0,0f,00,00,04,00,00,00,21,01,00,00,a0,0f,\
00,00,03,00,00,00,20,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
clsid大概保存在结构的尾部,0表示什么都不显示。不过这个结构到底是什么结构了?谢谢lbird(★郑恒★)的提醒了另外第3个问题我估计可没有lbird(★郑恒★)所说的那么简单了。切换到哪个BAND,IE根本没有保存该栏的信息(regMon观察的结果)。我想即使保存但是也不可能根据这些信息得到Band的接口(得到band的接口可以对该band进行控制了)。
IE是通过ShowBrowserBar方法来显示某个BAND的,而这个函数的第一个参数就是要求BAND的CLISD信息。所以保存的信息可以直接或间接地得到BAND的CLISD。
这个问题我也想找个时间弄清楚,下周来再研究了:)
得到了WebBrowser的接口,就可以通过该接口得到IE的主窗口了,再取得band的父窗口IE主窗口的子窗口即“basebar”类的窗口从而应该可以利用Accessibility得到Container的IOleWindow及其相关的接口,从而可以进一步获取band的相关信息。