Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.12.21;
Скачать: CL | DM;

Вниз

код 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
2-1386312700
Dmitry123
2013-12-06 10:51
2014.12.21
перевод координат


15-1399926602
Юрий
2014-05-13 00:30
2014.12.21
С днем рождения ! 13 мая 2014 вторник


15-1400787163
Дмитрий СС
2014-05-22 23:32
2014.12.21
Контрольное число


15-1400304929
Антоха
2014-05-17 09:35
2014.12.21
Ошибка "сервер Rpc не доступен"


1-1329071444
Proger254
2012-02-12 22:30
2014.12.21
Вызов функции чужого приложения