Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > проблемы с IHTMLDocument2 в потоке


Автор: hawkins 15.11.2011, 13:59
Не могу давно решить проблему при использовании движка IE в потоке. Обычно для парсинга в отдельном потоке создаю интерфейс IHTMLDocument2 так:

var 
 XDoc: IHTMLDocument2;
begin
  CoInitialize(nil);
  xdoc:=CoHTMLDocument.Create as IHTMLDocument2;
...

так все нормально, но вот если в главном окне переключить раскладку клавиатуры с английской на русскую, окно проги виснет, контролы перестают реагировать. После завершения потока окно просыпается. Зависает только если язык переключать на русский, если с русского на инглиш то не виснет. 

Зависает самый элементарный код. Прикрепляю тестовый проект на несколько строк, в главном окне две кнопки для запуска и остановки потока, в потоке создается IHTMLDocument2. После запуска потока и переключения клавы (с инглиш на рус) зависает окно.

Автор: MetalFan 15.11.2011, 16:21
Да вроде особого криминала в приведенных огрызках кода не вижу.
Разве что попробовать заменить CoInitialize на CoInitializeEx( nil, COINIT_MULTITHREADED )

Автор: hawkins 15.11.2011, 22:33
MetalFan, ты прав, теперь работает, спасибо. Теперь буду спать спокойно  smile 

Автор: MetalFan 16.11.2011, 08:06
Ну тогда отмечаем вопрос, как решенный.
Да, и название темы не совсем соответствовало содержанию.. при чем тут webbrowser, если работа идет с IHTMLDocument?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)