Привет всем.
Столкнулся с проблемой при написании 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`а не вызываются, скажем так, старым окном?
Заранее спасибо.
Здравствуйте, d.e.a.d, Вы писали:
[]
DEA>Посоветуйте плиз, что не так, то есть почему функции singleton`а не вызываются, скажем так, старым окном?
Слабо уразумел ваше описание, но все-же: синглтон он и в африке синглтон. У вас BHO является синглтоном или какой другой COM-сервер сделан как синглтон? Что-то я не понял из вашего объяснения...
Ну да это не суть: экземпляр BHO поднимается для каждого нового окна IE, вне зависимости — поток ли это или новый процесс. Так что проблема в вашем коде. Где — так сразу не скажешь. Вот если бы увидеть минимальный проблемный код — тогда вероятность обнаружения граблей существенно бы повысилась
Здравствуйте, Flamer, Вы писали:
F>Слабо уразумел ваше описание, но все-же: синглтон он и в африке синглтон. У вас BHO является синглтоном или какой другой COM-сервер сделан как синглтон?
Другой COM-сервер как BHO, а BHO — обычный in-process server.
Спасибо за внимание

. Проблему решил

Действительно "грабли" были в моем коде.
если кому интересно объясню подробнее.
Здравствуйте, Аноним, Вы писали:
А>Спасибо за внимание
. Проблему решил
Действительно "грабли" были в моем коде.
А>если кому интересно объясню подробнее.
Можно подробнее? Кажется у меня похожие грабли.