Имя: Пароль:
1C
1С v8
Никто не пробовал по имени срубить процесс в винде из 1с?
,
0 BigShmax
 
29.03.12
14:20
очень нужно при определенном действии снимать процесс виндовый, имя известно - как бы срубить его.
1 vicof
 
29.03.12
14:21
через WSH
2 Fragster
 
гуру
29.03.12
14:21
taskkill
3 Fragster
 
гуру
29.03.12
14:21
(1) если тупо по имени - то не обязательно
4 forforumandspam
 
29.03.12
14:21
5 Ёпрст
 
29.03.12
14:21
/taskkill
6 vicof
 
29.03.12
14:22
Option Explicit
Dim objWMIService,Processes,Process, CommandLine, WshShell
Set WshShell = CreateObject("WScript.Shell")

'Получаем список процессов notepad.exe через WMI
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set Processes = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='r_server.exe'")

If Processes.Count => 1 Then            
   For Each Process In Processes        
      CommandLine = Process.CommandLine    
      Process.Terminate
   Exit For
Next
End If
7 rs_trade
 
29.03.12
14:25
Процедура УбитьПроцесс(ИмяПроцесса, ИмяПользователя="")
   
   objWMIService = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяКомпьютера() +"\root\cimv2");
   ProcessSet = objWMIService.ExecQuery("select * from win32_process where name='"+ИмяПроцесса+"'");
   Для Каждого Process Из ProcessSet Цикл
       User    = "";
       Domain    = "";
       
       Если ПустаяСтрока(ИмяПользователя) Тогда
           Process.Terminate();
       Иначе            
           Process.GetOwner(User, Domain);
           Если User = ИмяПользователя Тогда
               ЗаписьЖурналаРегистрации("ОБМЕН.Автолог", УровеньЖурналаРегистрации.Информация, , , "Убили процесс - "+Process.Path_.RelPath);
               Process.Terminate();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры
8 Fragster
 
гуру
29.03.12
14:43
КомандаСистемы( TASKKILL /F /IM 1c8.exe");
9 BigShmax
 
29.03.12
14:46
(6) (7)   спасибо  
ушел на базу :-)
пойду  пробовать килячить процессы :-)
10 Maxus43
 
29.03.12
14:49
я за таск_килл
11 BigShmax
 
29.03.12
15:01
(10) преимущества?
12 Fragster
 
гуру
29.03.12
15:02
(11) тебе за количество строк платят?
13 rs_trade
 
29.03.12
15:04
(10) за дурацкое выскакивающее черное окошко
14 Fragster
 
гуру
29.03.12
15:06
(13) Все равно меньше получается

WshShell = Новый COMОбъект("WScript.Shell")
WshShell.Run("TASKKILL /F /IM 1c8.exe",0,1);
15 BigShmax
 
29.03.12
15:08
(14)  компактнее и читаемее.  ща заценю  если без всяких побочных эфектов  то  круть.
16 BigShmax
 
29.03.12
15:40
лабораторные испытания  на  первом попавшемся процессе прошли удачно , а вот полевые  закончились крахом :-(
всплывающее окно которое мне нужно гасить  не создает процесса собственного а является составляющим другого который гасить нельзя :-(  можно ли отловить окно по имени и закрыть его ? :-)
17 rs_trade
 
29.03.12
15:42
(16) а сделать так что бы оно не всплывало никак?
18 Fragster
 
гуру
29.03.12
15:43
можно ли отловить окно по имени и закрыть его - можно
19 BigShmax
 
29.03.12
15:46
(17) никак  мне нужно чтобы оно всплывало.  к нему  после всплытия  идет обращение через актив икс.  но после завершения  события его приходится руками запахивать, а хотлось бы  из 1с.   оно просто в трее появляется и потом умирает.  на текущий оно распазхивается  - все обращения через ком объект работают осталось запахнуть его.
20 BigShmax
 
29.03.12
15:48
(18)   а подробнее
21 BigShmax
 
29.03.12
16:14
"можно" это вся инфа какую можно получить ? :-(
22 BigShmax
 
29.03.12
17:49
и тишина :-(
23 Fragster
 
гуру
29.03.12
17:58
24 Fragster
 
гуру
29.03.12
17:58
хотя я не помню, auto it! вполне может работать из командной строки
25 oleg_km
 
29.03.12
18:06
Процесс запахивания - это что? просто в свое время автоматизировал банк-клиент, тоже нужно было запахивать окно, отправил ему WM_CLOSE - не проканало, нужно было как-то эмулировать нажатие ОК. Короче забил на это. А так WinAPI и COM тебе в руки. FindWindow, SendMessage или PostMessage и т.д.
26 BigShmax
 
29.03.12
18:17
(25)  запахивание  это нажатие на крестик   справа сверху :-)
27 BigShmax
 
29.03.12
18:26
а нет  примера использования  кого нить из WinAPI ?  или помогите  мне  как нить перебрать окна и например вывести через Сообщить() ?