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


Автор: BASSoft 29.11.2007, 21:21
Подключаюсь к WMI: 

Код

var ov: OleVariant;
Begin
     ov:=CreateOleObject('wbemScripting.Swbemlocator');
     .......
end;


Этот код нормально работает в основном потоке. Но когда я помещяю этот код в отдельный поток при выполнении программы возникает ошибка "Не был вызван метод CoInitialize". 

Подскажите как мне избавиться от этой ошибки при работе с потоком.

Автор: MetalFan 29.11.2007, 22:01
странный человек, ему ж было написано - "не вызван метод...."
так вызови его!

Автор: BASSoft 29.11.2007, 22:03
Как его вызвать? Что это за метод? Почему в основном потоке и без него работает?

Автор: Alexeis 29.11.2007, 22:18
BASSoft, возможно нужно вызывать CoInitialize в каждом из потоков.

Автор: BASSoft 1.12.2007, 11:15
Все кажеться разобрался, есть такая статья: "Delphi 6 и COM. Поставим COM на поток".  Денис Мигачев Denver. The Marion. [email protected]. В ней все написанно (кажеться). Буду ее читать. 
 

Автор: iskatel2 24.12.2007, 18:58
Цитата(BASSoft @  1.12.2007,  11:15 Найти цитируемый пост)
Все кажеться разобрался, есть такая статья: "Delphi 6 и COM. Поставим COM на поток".  Денис Мигачев Denver. The Marion. [email protected]. В ней все написанно (кажеться). Буду ее читать. 


как разберешься напиши как же всеже  вызывать этот CoInitialize

Автор: tryagain 27.12.2007, 04:00
Читаем drkb. smile 

В dpr  добавляем в uses ComObj
после begin первой строкой
CoInitFlags=0;

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