Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Узнать с какими параметрами запущен процес

Ответить
Настройки темы
VBS/WSH/JS - [решено] Узнать с какими параметрами запущен процес

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть скрипт на VBS
читать дальше »
Код: Выделить весь код
Sub ProgramRun(Path,StartupOptions,PauseTime)
	Set WshShell = CreateObject("WScript.Shell")
	WshShell.Run("""" & Path & """" & StartupOptions)
	WScript.Sleep 1000*PauseTime
	Set WshShell = Nothing
End Sub

Function IsRunning (ProcessName)
	Dim Process
	IsRunning  = False
	For Each Process in GetObject("winmgmts:"). _ 
		ExecQuery ("select * from Win32_Process where name='" & ProcessName & "'")
		IsRunning  = True
		Exit for 
	Next
End Function 

FullListParameters = Array("C:\WINDOWS\system32\notepad.exe| C:\1.txt>5","C:\WINDOWS\system32\notepad.exe| C:\2.txt>8")

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")'Подключеем FileSystemObject
For Each MyApp in FullListParameters
	p = InStr(MyApp, "|")
	s = InStr(MyApp, ">")
	if p = 0 and s = 0 Then
		Path = MyApp
		Param = ""
		TSec = 2
	elseIf p <> 0 and s = 0 Then
		Path = Mid(MyApp,1,p-1)
		Param = Mid(MyApp,p+1)
		TSec = 2
	elseIf p <> 0 and s <> 0 Then
		Path = Mid(MyApp,1,p-1)
		Param = Mid(MyApp,p+1,s-p-1)
		TSec = Mid(MyApp,s+1)		
	else p = 0 and s <> 0
		Path = Mid(MyApp,1,s-1)
		Param = ""
		TSec = Mid(MyApp,s+1)			
	end if
	If FSO.FileExists(Path) and IsRunning(Mid(Path,InStrRev(Path, "\") + 1)) = False Then'
		Call ProgramRun(Path, Param, TSec)
	end if
Next
Set FSO = Nothing


Скрипт проверяет существует ли файл C:\WINDOWS\system32\notepad.exe, не запущен ли процесс notepad.exe и если оба условия выполняются то запускает программу с нужными параметрами и ждет указанно количество секунд.
Ну а теперь собственно проблема. Нужно запустить блокнот еще раз но с другими параметрами сейчас это не произойдет потому что процесс notepad.exe уже будет существовать
По сути, я так понимаю, задача сводиться к тому чтобы определить что notepad.exe был запущен с другими параметрами. Как это сделать, то есть как узнать параметры с которыми был запущен процесс

Отправлено: 18:17, 26-10-2011

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата PoltavaPGS:
Как это сделать, то есть как узнать параметры с которыми был запущен процесс »
Например запускаем notepad:
Код: Выделить весь код
notepad 1.txt
Теперь узнаем с какими парамеирами:
Код: Выделить весь код
wmic process where name="notepad.exe" get commandline
Или в батнике для дальнейшей обработки:
Код: Выделить весь код
@echo off
setlocal

set "wmic=wmic process where name="notepad.exe" get commandline /value"
for /f "tokens=*" %%i in (' "%wmic%" ') do 1>nul set "%%i"

set commandline
Упс.. Не заметил, что нужен vbs

Последний раз редактировалось Foreigner, 26-10-2011 в 18:51.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:42, 26-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата PoltavaPGS:
По сути, я так понимаю, задача сводиться к тому чтобы определить что notepad.exe был запущен с другими параметрами. Как это сделать, то есть как узнать параметры с которыми был запущен процесс »
Коллега Foreigner практически привёл код. То есть, Вам нужно добавить в WMI запрос ещё условие для свойства «.CommandLine».

Отправлено: 20:37, 26-10-2011 | #3


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем спасибо. Решил проблему вставив строчку msgbox Process.CommandLine она как раз и отображает нужные мне данные
Код: Выделить весь код
Function IsRunning (ProcessName)
	Dim Process
	IsRunning  = False
	For Each Process in GetObject("winmgmts:"). _ 
		ExecQuery ("select * from Win32_Process where name='" & ProcessName & "'")
		msgbox Process.CommandLine
		IsRunning  = True
		Exit for 
	Next
End Function

Отправлено: 16:10, 27-10-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Узнать с какими параметрами запущен процес

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Узнать имя пользователя, от которого запущен процесс vitalisvv AutoIt 4 16-09-2009 01:16
Неизвестный процес Lamorte Лечение систем от вредоносных программ 5 03-04-2008 09:32
Интернет - Как спрятать процес загрузки в XP Morbid Microsoft Windows 2000/XP 1 17-10-2007 15:23
windows xp не выгружает процес slavik neo Microsoft Windows 2000/XP 1 04-09-2005 16:03
Delphi - Как в Delphi узнать, запущен ли Word или Excel Kroc Программирование и базы данных 5 27-10-2004 00:26




 
Переход