Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Узнать с какими параметрами запущен процес (http://forum.oszone.net/showthread.php?t=218971)

PoltavaPGS 26-10-2011 18:17 1782311

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

Foreigner 26-10-2011 18:42 1782332

Цитата:

Цитата 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

Iska 26-10-2011 20:37 1782415

Цитата:

Цитата PoltavaPGS
По сути, я так понимаю, задача сводиться к тому чтобы определить что notepad.exe был запущен с другими параметрами. Как это сделать, то есть как узнать параметры с которыми был запущен процесс »

Коллега Foreigner практически привёл код. То есть, Вам нужно добавить в WMI запрос ещё условие для свойства «.CommandLine».

PoltavaPGS 27-10-2011 16:10 1782998

Всем спасибо. Решил проблему вставив строчку 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



Время: 10:38.

Время: 10:38.
© OSzone.net 2001-