![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Доброго времени суток. 
		
	
		
		
		
		
		
	
		
		
	
	
	Нужен совет. Есть VBS скрипт который собирает информацию о компьютерах(локальном/удаленном) по имени или IP адресу. Всю информацию он записывает в файл. Я нашел способ запустить этот скрипт из Delphi и даже как получить единичные значения результата его работы, но возникла другая проблема, как можно получить из скрипта массив, грубо говоря список локальных дисков. Подскажите пожалуйста.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
  | 
| Этот пользователь сказал Спасибо Uniq! за это полезное сообщение: | ||
 
Freeman (27.08.2014)
  | ||
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Конструкцию для запуска скрипта я использую Код: 
	  sc:=CreateOLEObject('MSScriptControl.ScriptControl');
  SC.Language:='VBScript';
  SC.Timeout:=-1;
  SC.AllowUI:=True;
  SC.ExecuteStatement(Memo1.Text);Код: 
	Dim Name1(10, 5)
'Name1=Array(1,2,3)
Dim i
i=0
Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & "eoi-004-06" & "\Root\CIMV2")
'Set Name1 = wmio.ExecQuery("Select * from Win32_LogicalDisk")
    For Each objItem in wmio.ExecQuery("Select * from Win32_LogicalDisk WHERE DriveType = 3 AND Size IS NOT NULL")
        Name1(i, 0)=objItem.Name
        Name1(i, 1)=objItem.FileSystem
        Name1(i, 2)=objItem.Size
        Name1(i, 3)=objItem.FreeSpace
        Name1(i, 4)=objItem.VolumeSerialNumber
        i=i+1
    NextКод: 
	wmio.ExecQuery("Select * from Win32_LogicalDisk WHERE DriveType = 3 AND Size IS NOT NULL") | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вроде к WMI можно как-то подключаться через ADO. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 так перепиши скрипт сразу в Delphi: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Цитата: 
	
  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Всем спасибо действительно решение было намного проще, после длительного гугления была найдена библиотека WbemScripting_TLB которая неплохо справляется с необходимой задачей, но возникла небольшая проблема.В определенные моменты, по непонятной причине появляется следующая ошибка  
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	Could not convert variant of type (Dispatch) into type (String)  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ну не может тип интерфейс к строке преобразоваться, проверяй тип варианта 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Последний раз редактировалось AngelNine, 29.08.2014 в 10:57.  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 VarType функция 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 А выяснить почему так происходит можно как то выяснить? 
		
	
		
		
		
		
		
		
			Все данные возвращаются в формате varDispatch((( Но большую часть он конвертирует нормально, а не которые нет... Последний раз редактировалось AngelNine, 29.08.2014 в 11:20.  |