Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

код VBS конвертировать в Delphi


allrussia ©   (2013-12-03 14:04:00) 

Есть следующий код:



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:00) [1]

А так ли уж обязательно нужно заниматься этим мазохизмом ?

Не проще ли запустить готовый VB-скрипт под управлением стандартного VBS-интерпретатора, представленного стандартным AX-объектом MSScriptControl.ScriptControl ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо