Имя: Пароль:
1C
 
Список процессов в WinXP
0 Admin_Net_1C
 
27.06.07
06:52
Подскажите пожалуйста как в 1С получить список запущенных процессов в WinXP, вариант предложенный на одном из форумов:

Процедура СписокПроцессов()
   Файл=СоздатьОбъект("Текст");
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language="vbscript";
   ТекстЗапроса="
   |Function SelectProcess
   | Dim ServicesSet
   | Dim Items
   | Set ServicesSet = GetObject(""winmgmts:{impersonationLevel=impersonate}!."")
   | Set Items = ServicesSet.ExecQuery(""Select * from Win32_Process"")
   | For Each Item in Items
   | SelectProcess = SelectProcess & Item.Name & "" "" & Item.Handle & "";""
   | Next
   |End Function";
   Скрипт.AddCode(ТекстЗапроса);
   СтрПроцессов = СтрЗаменить(Скрипт.Run("SelectProcess"),";",РазделительСтрок);
   Для СчЦикла = 1 По СтрКоличествоСтрок(СтрПроцессов) Цикл
       Файл.ДобавитьСтроку(СтрПолучитьСтроку(СтрПроцессов,СчЦикла));
   КонецЦикла;
   Файл.Записать("d:\Process.log");
КонецПроцедуры

выдает ошибку:
СтрПроцессов=СтрЗаменить(Скрипт.Run"SelectProcess"), ";", РазделительСтрок);
{\\SERVER\БАЗЫ ДАННЫХ\_TESTBASE1\EXTFORMS\_РОБОТ.ERT(19)}: :
1 smaharbA
 
27.06.07
06:55
проверь вперед работу РПС и ВМИ
хотябы так wmic process get executablepath,processid
2 IUnknown
 
27.06.07
06:55
www.forum.mista.ru&numdoc=10&ds" target="_blank">http://www.yandex.ru/yandsearch?ras=1&date=&text=Select+*+from+Win32_Process&spcctx=notfar&zone=all&linkto=&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=27&to_month=6&to_year=2007&mime=all&Link=&rstr=&site=www.forum.mista.ru&numdoc=10&ds</a>=

http://www.yandex.ru/yandsearch?text=%5Betdsq+%FF%ED%E4%E5%EA%F1+yb%5Bez+%ED%E5+%ED%E0%E9%E4%E5%F2&ras=1
3 IUnknown
 
27.06.07
06:56
4 smaharbA
 
27.06.07
06:59
хотя
Set ServicesSet = GetObject(""winmgmts:{impersonationLevel=impersonate}!."")
неверно, надо так
Set ServicesSet = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"")
или так
Set ServicesSet = GetObject(""winmgmts:{impersonationLevel=impersonate}!"")
или вообще
Set ServicesSet = GetObject(""winmgmts:"")
5 Admin_Net_1C
 
27.06.07
07:01
(1) запустил в коммандной строке, список выводится
1С также выдает ошибку
6 Admin_Net_1C
 
27.06.07
07:05
(4) спасибо, изменил на

Set ServicesSet = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"")

все завелось
7 smaharbA
 
27.06.07
07:12
а вообще мене больше по дуже -

//*******************************************
Функция Win32_X(Путь="Win32_process",Фильтр="name='1CV7S.EXE'",Компьютер=".",Поля="*")
   Если ПустоеЗначение(Фильтр)=1 Тогда
       Ф="";
   Иначе
       Ф= "Where "+Фильтр;
   КонецЕсли;
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language="javascript";
   Локатор=СоздатьОбъект("wbemscripting.swbemlocator");
   Сервис=Локатор.ConnectServer(Компьютер,"root\cimv2");
   Коллекция=Сервис.ExecQuery("Select "+Поля+" from "+Путь+" "+Ф);
   Если Коллекция.count=0 Тогда
       ТЗ.НоваяКолонка("Ошибка");
       ТЗ.НоваяСтрока();
       ТЗ.Ошибка="Ненайдены экземпляры Select "+Поля+" from "+Путь+" "+Ф;
       Возврат ТЗ;
   КонецЕсли;
   Скрипт.AddObject("Коллекция",Коллекция);
   Перечисленные=Скрипт.Eval("new Enumerator(Коллекция)");
   Свойства=Перечисленные.item(0).Properties_;
   Скрипт.AddObject("Свойства",Свойства);
   ПеречисленныеСвойства=Скрипт.Eval("new Enumerator(Свойства)");
   Пока ПеречисленныеСвойства.atEnd(0)=0 Цикл
       Стр=ПеречисленныеСвойства.item(0).name;
       ТЗ.НоваяКолонка(Стр);
       ПеречисленныеСвойства.moveNext(0);
   КонецЦикла;

   Пока Перечисленные.atEnd(0)=0 Цикл
       НС=ТЗ.НоваяСтрока();
       Для к=1 По ТЗ.КоличествоКолонок() Цикл
           Стр=ТЗ.ПолучитьПараметрыКолонки(к);
           ТЗ.УстановитьЗначение(НС,Стр,Перечисленные.item(0).Properties_.Item(Стр).Value);
       КонецЦикла;
       Перечисленные.moveNext(0);
   КонецЦикла;
   Возврат ТЗ;
   //Предупреждение(Текст);

КонецФункции

Процедура Сформировать()
   Перем Стр;
   ТЗ=Win32_X("Win32_Process","");
   ТЗ.ВыбратьСтроку();
КонецПроцедуры    // Сформировать
8 IUnknown
 
27.06.07
07:13
чистый одиэсниг
9 smaharbA
 
27.06.07
07:13
Так универсальнее, получай любую коллекцию хоть процессов, хоть процессоров, хоть сервисов и т.д. даже незная пропертисы
10 smaharbA
 
27.06.07
07:15
Ну еще попытки надо добавить конечно
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.