Taki fragment kodu.. czy ktoś wie może dlaczego nie działa (w innym projekcie działa).
Złośliwym osobom problemami proponuję wyluzowanie się w innych miejscach do tego przeznaczonych.
uses
ActiveX,
ComObj;
function _GetWMIObject(const objectName: String): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, BindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten,
Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;
procedure Test;
var
objWMIService: OLEVariant;
colItems: OLEVariant;
colItem: OLEVariant;
oEnum: IEnumvariant;
iValue: LongWord;
osVerInfo: TOSVersionInfo;
W7: Boolean;
begin
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
GetVersionEx(osVerInfo);
W7 := (osVerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) and (osVerInfo.dwMajorVersion > 5);
objWMIService := _GetWMIObject('winmgmts:\\localhost\root\cimv2');
end;
// wywołanie
Test;
i w linii
objWMIService := _GetWMIObject('winmgmts:\\localhost\root\cimv2');
mam:
First chance exception at $7C812FD3. Exception class EOleSysError with message 'Nieprawidłowa składnia'. Process Projekt.exe (5740)
W pracy krokowej błąd wykazuje tu:
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
Pozdrawiam