Форум: "Начинающим";
Текущий архив: 2014.12.21;
Скачать: [xml.tar.bz2];
Внизкод VBS конвертировать в Delphi Найти похожие ветки
← →
allrussia © (2013-12-03 14:04) [0]Есть следующий код:
Function GetSummaryInformation(settings, requestedInformation)
dim query, objInParam, objOutParams, summaryInformation, requested
set objInParam = managementService.Methods_("GetSummaryInformation").InParameters.SpawnInstance_( )
objInParam.SettingData = settings
objInParam.RequestedInformation = requestedInformation
set objOutParams = managementService.ExecMethod_("GetSummaryInformation", objInParam)
if objOutParams.ReturnValue = wmiSuccessful then
GetSummaryInformation = true
for each summaryInformation in objOutParams.SummaryInformation
WriteLog "Virtual System Summary Information:"
for each requested in requestedInformation
select case requested
case 0:
WriteLog Format1("Name: {0}", summaryInformation.Name)
case 1:
WriteLog Format1("Element Name: {0}", summaryInformation.ElementName)
case 2:
WriteLog Format1("Creation Time: {0}", summaryInformation.CreationTime)
case 3:
WriteLog Format1("Notes: {0}", summaryInformation.Notes)
case 4:
WriteLog Format1("Number of Processors: {0}", summaryInformation.NumberofProcessors)
end select
next
next
else
WriteLog Format1("GetSummaryInformation failed with ReturnValue: {0}", objOutParams.ReturnValue)
end if
End Function
DELPHI: что удалось имплементировать
var
wmiLocator: TSWbemLocator;
wmiServices: ISWbemServices;
wmiObjectSet: ISWbemObjectSet;
wmiObject, wmiOutParams,wmiInParams,wmiInst: ISWbemObject;
wmiProp: ISWbemProperty;
ovVar,propValue: OleVariant;
Enum: IEnumVariant;
wmiMethod: SWbemMethod;
Arg: string ;
lwValue: LongWord;
wmiProperty: SWbemProperty;
begin
wmiLocator := TSWbemLocator.Create (Nil);
wmiServices := wmiLocator.ConnectServer(".", "root\virtualization", ".", ".",
"", "", 0, nil);
Arg := "SELECT * FROM MSVM_VirtualSystemManagementService";
wmiObjectSet := wmiServices.ExecQuery (Arg, "WQL",
wbemFlagReturnImmediately, nil) ;
Enum := (wmiObjectSet._NewEnum) as IEnumVariant;
if (Enum.Next (1, ovVar, lwValue) = S_OK) then
begin
wmiObject := IUnknown(ovVar) as SWBemObject;
wmiMethod := wmiObject.Methods_.Item ("GetSummaryInformation", 0) ;
wmiInParams := wmiMethod.InParameters;
wmiInst := wmiInParams.SpawnInstance_(0) ;
Все: дальше затык. Нужно передать параметры
wmiProperty := wmiInst.Properties_.Add("SettingData", ? , False, 0) ;
SettingData должно быть согласно документации Null
wmiProperty := wmiInst.Properties_.Add("RequestedInformation", wbemCimtypeUint32, True, 0) ;
RequestedInformation должно быть согласно документации массив чисел 0,1,2,4 и тп.
ссылка на документацию
http://msdn.microsoft.com/en-us/library/cc160706%28v=vs.85%29.aspx
← →
Сергей М. © (2013-12-03 17:27) [1]А так ли уж обязательно нужно заниматься этим мазохизмом ?
Не проще ли запустить готовый VB-скрипт под управлением стандартного VBS-интерпретатора, представленного стандартным AX-объектом MSScriptControl.ScriptControl ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.12.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c