Показать сообщение отдельно
  #2  
Старый 28.05.2014, 02:05
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Redddd
Хочу использовать WMI
Беру пример с msdn.microsoft.com:
Код:
// Step 1: --------------------------------------------------
// Initialize COM. ------------------------------------------
 Form1->Memo1->Clear();

 hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
 if (FAILED(hres))
    {
     Form1->Memo1->Lines->Add("Failed to initialize COM library. Error code = 0x");
        //return 1;                  // Program has failed.
    }
И сразу же на первом шаге ошибка - Failed to initialize COM library.
В чем дело?
СиБилдера у меня нет, но на Delphi вот такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  hres: DWORD;
begin
  hres := CoInitializeEx(0, COINIT_MULTITHREADED);
  if Failed(hres) then ShowMessage(SysErrorMessage(hres));
end;
сообщает о такой ошибке: "Изменение режима для потока после его установки невозможно" - дело видимо в этом.

При работе с WMI я использовал вызов CoInitialize (а не CoInitializeEx) и то, только при работе в параллельном (не основном) потоке (thread).
Ответить с цитированием