Почему StartInfo (ProcessStartInfo) всегда пуст? - PullRequest
6 голосов
/ 05 декабря 2008

Согласно MSDN :

Если вы не использовали метод Start для запуска процесса, свойство StartInfo не отражает параметры, использованные для запуска процесса. Например, если вы используете GetProcesses для получения массива процессов, запущенных на компьютере, свойство StartInfo каждого Process не содержит исходного имени файла или аргументы, использованные для запуска процесса.

Хорошо, это имеет смысл. У меня вопрос, почему эти параметры остаются пустыми, даже если вы используете Process.Start ()?

Например:

    Dim startInfo As New ProcessStartInfo("firefox.exe")
    startInfo.Arguments = "www.stackoverflow.com"
    startInfo.WindowStyle = ProcessWindowStyle.Minimized
    Process.Start(startInfo)
    For Each proc As Process In Process.GetProcessesByName("firefox")
        Debug.Print(String.Format("ProcessID={0}; Arguments={1}", _
        proc.Id, proc.StartInfo.Arguments))
    Next proc

В этом случае, хотя я и предоставил Аргументы, это свойство все еще пустое:

альтернативный текст http://www.sg -squared.com / images / startinfo.png

Что дает?

Ответы [ 4 ]

3 голосов
/ 05 декабря 2008

Вы все еще делаете GetProcess, поэтому он продолжает работать так же. Тот факт, что вы начали это, не имеет значения.

Process.Start (...) возвращает процесс, который вы запустили. Я ожидаю, что если вы проверите свойство StartInfo, оно будет заполнено.

3 голосов
/ 05 декабря 2008

Вы получаете другой экземпляр Process от GetProcessesByName, который относится к последнему случаю оператора в MSDN.

2 голосов
/ 27 марта 2009

Process.StartInfo всегда пусто !!!

Я получил весь список запущенных процессов и пытаюсь сбросить значения в StartInfo, но поля StartInfo всех 100+ процессов пусты.

Из MSDN:

"Если вы не использовали метод Start для запуска процесса, свойство StartInfo не отражает параметры, используемые для запуска процесса. Например, если вы используете GetProcesses для получения массива процессов, запущенных на компьютере, Свойство StartInfo каждого процесса не содержит исходного имени файла или аргументов, использованных для запуска процесса. "

Вы будете использовать WMI, чтобы получить эту информацию сейчас.

1 голос
/ 05 декабря 2008

Тьфу, это расстраивает. Я думаю, что они, возможно, могли бы сделать эту документацию немного более понятной, так как ее легко прочитать как «если вы используете Process.Start, тогда эта информация будет доступна».

Думаю, мне все-таки придется использовать WMI, ну что ж.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...