![]() |
|
|
|
|
#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) |