Я пытаюсь заставить работать приведенный ниже фрагмент:
function GetWMIstring: string;
var
objWMIService : OLEVariant;
colItems : OLEVariant;
colItem : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
function GetWMIObject(const objectName: String): IDispatch;
var
chEaten: Integer;
BindCtx: IBindCtx;//for access to a bind context
Moniker: IMoniker;//Enables you to use a moniker object
begin
OleCheck(CreateBindCtx(0, bindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));//Converts a string into a moniker that identifies the object named by the string
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));//Binds to the specified object
end;
begin
objWMIService := GetWMIObject('winmgmts:\\.\root\Microsoft\SqlServer\ComputerManagement');
colItems := objWMIService.ExecQuery('SELECT * FROM ServerSettings','WQL',0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
while oEnum.Next(1, colItem, iValue) = 0 do
begin
Result:=colItem.Properties_.Item('<What should this be?>', 0);
end;
end;
Я получаю ошибку OLE с GetWMIObject ...
Фрагмент кода по этому вопросу работает нормально: Как я могу использовать WMI с Delphi без резкого увеличения размера файла приложения?
Однако я не могу понять, какие значения должны быть точно с фрагментом, который я предоставил, чтобы получить Установленный SQL Экземпляр на моем Local P C ...