IE "на браузер" панель обозревателя

Есть ли способ создать панель обозревателя "для браузера" в IE, что означает панель обозревателя, общую для всех открытых вкладок? Панели обозревателя, созданные в соответствии с рекомендациями MS, являются "вкладками", что означает, что на каждой новой вкладке открывается новая панель обозревателя. В качестве альтернативы, есть ли способ отобразить HTML-документ внутри одной из встроенных панелей проводника для каждого браузера - "Избранное", "Ленты", "Обсудить" и т. Д.?

1 ответ

Решение

Нет встроенного способа сделать это. Модель расширяемости для панелей проводника диктует соотношение 1:1 между панелями проводника и вкладками. Причин для этого много, и часто они связаны с самым простым путем перехода с IE6 на современный веб-браузер с вкладками. Подумайте об архитектуре на основе OLE: для начала у вас есть объект сайта, установленный IObjectWithSite. Вы используете сайт для опроса таких вещей, как IWebBrowser2, текущий IHTMLDocument2 и т. Д. Часто расширения кэшируют эти указатели, когда получают их. Таким образом, вы хотите это соответствие 1:1.

Если вы хотите иметь панель обозревателя для одного экземпляра, вы можете сделать это, но это потребует повторного создания родительского окна перекрестного процесса и целой связки кода на основе BHO, чтобы получить правильное состояние окна IE. Вам лучше сделать ваше состояние легко сериализуемым, обработав DWebBrowserEvents2::WindowStateChanged и подделав его.

Другие вопросы по тегам