PoltavaPGS
26-10-2011, 18:17
Есть скрипт на 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 был запущен с другими параметрами. Как это сделать, то есть как узнать параметры с которыми был запущен процесс
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 был запущен с другими параметрами. Как это сделать, то есть как узнать параметры с которыми был запущен процесс