IE открывает новое окно в потоке.......
От: d.e.a.d  
Дата: 06.08.04 20:52
Оценка:
Привет всем.

Столкнулся с проблемой при написании BHO к IE.
Я хочу управлять всеми BHO, которые были подгружены IE. Для ентого я написал еще один COM-сервер(out-process), который является singleton`ом.
Таким образом, все BHO, обращаются к одному и тому же экземпляру управляющего сервера.

Все хорошо, только если в запущенном IE не открывать новое окно. Если оно каким нить образом откроется, например, File->Open->New Window, то получается следующее:

так как новое окно(New) создается в потоке, который в свою очередь создается IE(Old). таким образом имеем два окна в одном процессе и один BHO для них.
загвоздка в том, что функции singletona вызывает только новое окно(New), а IE(Old), тот, что открыл новое окно, эти функции не вызывает(точнее функции возвращают не те значения, которые я в них заложил, а именно E_INVALIDARG). вот. Как смог объяснил.

Посоветуйте плиз, что не так, то есть почему функции singleton`а не вызываются, скажем так, старым окном?

Заранее спасибо.
Re: IE открывает новое окно в потоке.......
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 06.08.04 22:06
Оценка:
Здравствуйте, d.e.a.d, Вы писали:

[]

DEA>Посоветуйте плиз, что не так, то есть почему функции singleton`а не вызываются, скажем так, старым окном?


Слабо уразумел ваше описание, но все-же: синглтон он и в африке синглтон. У вас BHO является синглтоном или какой другой COM-сервер сделан как синглтон? Что-то я не понял из вашего объяснения...

Ну да это не суть: экземпляр BHO поднимается для каждого нового окна IE, вне зависимости — поток ли это или новый процесс. Так что проблема в вашем коде. Где — так сразу не скажешь. Вот если бы увидеть минимальный проблемный код — тогда вероятность обнаружения граблей существенно бы повысилась
Re[2]: IE открывает новое окно в потоке.......
От: Аноним  
Дата: 07.08.04 06:48
Оценка:
Здравствуйте, Flamer, Вы писали:


F>Слабо уразумел ваше описание, но все-же: синглтон он и в африке синглтон. У вас BHO является синглтоном или какой другой COM-сервер сделан как синглтон?


Другой COM-сервер как BHO, а BHO — обычный in-process server.


Спасибо за внимание. Проблему решил Действительно "грабли" были в моем коде.
если кому интересно объясню подробнее.
Re[3]: IE открывает новое окно в потоке.......
От: rmihael Украина  
Дата: 06.09.04 01:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Спасибо за внимание. Проблему решил Действительно "грабли" были в моем коде.

А>если кому интересно объясню подробнее.
Можно подробнее? Кажется у меня похожие грабли.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.