Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 | 2 |

 

  Вопрос: Как определить наличие процесса? Добавлено: 04.07.10 13:10  

Автор вопроса:  griha09
Как определить наличие процесса с определенным именем? Уже существующего, а не созданного тобой.

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 1
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #1 Добавлено: 05.07.10 12:50
  1.  
  2. strComputer = "."
  3. strProcess = "cmd.exe"
  4.  
  5. Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
  6. Set objEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE (TargetInstance ISA 'Win32_Process') AND (TargetInstance.Description = '" & strProcess & "')")
  7. Wscript.Echo "Waiting for events ..."
  8. Set objReceivedEvent = objEvents.NextEvent
  9. Wscript.Echo strProcess & " started"
  10. Wscript.quit

Ответить

Номер ответа: 2
Автор ответа:
 griha09



Вопросов: 4
Ответов: 3
 Профиль | | #2 Добавлено: 06.07.10 21:42
Спасибо за ответ, но что-то не пойму синтаксис. На примере Total Commander.
Total Commander запущен. Пишу
strProcess = "Totalcmd.exe" отвечает "Waiting for events ..."
strProcess = "Totalcmd" отвечает "Waiting for events ..."
strProcess = "Total Commander" отвечает "Waiting for events ..."
strProcess = "c:\Program Files\Total Commander\Totalcmd.exe" вообще ошибка
Как правильно обозначать процесс?

Ответить

Номер ответа: 3
Автор ответа:
 griha09



Вопросов: 4
Ответов: 3
 Профиль | | #3 Добавлено: 07.07.10 17:36
на не запущенные процессы скрипт также отвечает "Waiting for events ..."
А как сделать чтоб он просто отвечал запущен процесс или нет. А то сейчас он сидит в памяти ждет пока процесс запустят и только тогда отвечает "cmd.exe started".

Ответить

Номер ответа: 4
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #4 Добавлено: 07.07.10 23:29
вот другой скрипт специально для тебя )
  1.  
  2. Dim strComputer, strProcess
  3.  
  4. strComputer = "."
  5. strProcess = "cmd.exe"
  6.  
  7. Dim wmiQuery: wmiQuery = "Select * From Win32_Process Where Name='" & strProcess & "'"
  8. Dim objWMIService: Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  9. Dim colItems: Set colItems = objWMIService.ExecQuery(wmiQuery)
  10. Dim intProcCount: intProcCount = colItems.Count
  11. Set colItems = objWMIService.ExecQuery(wmiQuery)
  12. intProcCount = colItems.Count
  13. If intProcCount > 0 Then
  14.   WScript.Echo "Process is running..."
  15. Else
  16.   WScript.Echo "Process is't running..."
  17. End If
  18. WScript.Quit

Ответить

Номер ответа: 5
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #5 Добавлено: 07.07.10 23:30
п.с. в переменную strComputer можно записать сетевой адрес компьютера

Ответить

Номер ответа: 6
Автор ответа:
 griha09



Вопросов: 4
Ответов: 3
 Профиль | | #6 Добавлено: 09.07.10 22:01
Большое спасииибо!!!

Ответить

Номер ответа: 7
Автор ответа:
 Станислав



Вопросов: 0
Ответов: 9
 Профиль | | #7 Добавлено: 14.08.10 09:31
А сделайте пожалуйста то же, только в цикле - проверка наличия определенного процесса до тех пор, пока он не закроется пользователем, после чего продолжить выполнение кода.

Ответить

Номер ответа: 8
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #8 Добавлено: 14.08.10 12:02
если я все правильно понял то так

  1.  
  2. Dim strComputer, strProcess
  3.   
  4. strComputer = "."
  5. strProcess = "cmd.exe"
  6.   
  7. do
  8. Dim wmiQuery: wmiQuery = "Select * From Win32_Process Where Name='" & strProcess & "'"
  9. Dim objWMIService: Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  10. Dim colItems: Set colItems = objWMIService.ExecQuery(wmiQuery)
  11. Dim intProcCount: intProcCount = colItems.Count
  12. Set colItems = objWMIService.ExecQuery(wmiQuery)
  13. intProcCount = colItems.Count
  14. If intProcCount > 0 Then
  15.   'WScript.Echo "Process is running..."
  16.   Wscript.sleep 1000
  17. Else
  18.   WScript.Echo "Process is't running..."
  19.   exit do
  20. End If
  21. loop
  22.  
  23. 'WScript.Quit

Ответить

Номер ответа: 9
Автор ответа:
 Станислав



Вопросов: 0
Ответов: 9
 Профиль | | #9 Добавлено: 14.08.10 12:41
Спасибо! Но как при этом WScript объявить? А вообще в идеале я преследую цель - ждать завершения дочернего процесса. Программа запускает приложение MyProg.exe с помощью Shell и ждет пока пользователь не закроет его, после чего продолжает выполнение кода.

Ответить

Номер ответа: 10
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #10 Добавлено: 14.08.10 13:09
Объект WScript можно использовать без создания.
На каком языке твоя программа? Если из скрипта запускаешь то там можно сделать так:
  1.  
  2. Dim objShell: Set objShell = CreateObject("Wscript.Shell")
  3. objShell.Run "MyProg.exe", 1, True
  4. '...

Ответить

Номер ответа: 11
Автор ответа:
 Станислав



Вопросов: 0
Ответов: 9
 Профиль | | #11 Добавлено: 14.08.10 13:31
Я пишу на VB.NET. Вот конкретное решение для своей цели нашел http://msdn.microsoft.com/ru-ru/library/xe736fyk(VS.90).aspx но не могу дойти умом, куда путь до запускаемого файла написать. Может подскажешь.

Ответить

Номер ответа: 12
Автор ответа:
 Станислав



Вопросов: 0
Ответов: 9
 Профиль | | #12 Добавлено: 14.08.10 13:34
Или я ошибаюсь?

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 14.08.10 14:13
Ошибаешься.. и копаешь не в ту сторону,WScript тут вообще не нужен,впрочем как и Shell.. Тебе нужно вот что:
http://msdn.microsoft.com/ru-ru/library/system.diagnostics.process.waitforexit.aspx

Ответить

Номер ответа: 14
Автор ответа:
 Станислав



Вопросов: 0
Ответов: 9
 Профиль | | #14 Добавлено: 14.08.10 14:26
Да, действительно то, что надо. Вот мне необходимо перед появлением основной формы запустить программу MyProg.exe, я пишу следующий код в Class в ApplicationEvents:
  1. Public Sub WaitForExit()
  2.             Shell("MyProg.exe")
  3.         End Sub

Но указанная программа не запускается, даже, если я этот код помещаю непосредственно на форму. Где я ошибся?

Ответить

Номер ответа: 15
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #15 Добавлено: 14.08.10 14:35
А ты путь указываешь так?)
Shell("MyProg.exe";)

попробуй напиши полный путь ("C:\MyProg.exe";)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам