Вопрос о классе ProcessStartInfo и свойстве Argument? - PullRequest
1 голос
/ 07 августа 2010

Пример кода:

var psi = new ProcessStartInfo();
psi.FileName = "path to update.exe";
psi.Arguments = "arguments for update.exe";
psi.Verb = "runas";

var process = new Process();
process.StartInfo = psi;
process.Start();   
process.WaitForExit();

Ссылка: 0xA3.

Программно в коде, какой тип объектов, если возможно, вы можете передать в свойство .Arguments? Обычно вы можете передать int или строковый тип. Я хочу знать, можете ли вы передать более сложный тип, такой как DirectoryInfo [] или FileInfo []? Кто-нибудь знает, возможно ли это? Если нет, то мне придется что-то придумать?

Почему? Я пытаюсь удалить какой-то проблемный код из очень большого фонового работника, и единственное решение состоит в том, чтобы передать необходимые мне данные в процесс, который будет обрабатывать работу, которая мне нужна, в совершенно ином процессе. Проблема эта проблема код всегда выдает на разрешения - разрешения, которые приложение не имеет.

Ответы [ 4 ]

1 голос
/ 07 августа 2010
  • Сериализует данные, после чего вы можете "передать" полученную строку в стандартный ввод другого процесса.См. Пример раздела справки «Свойство Process.StandardInput» по адресу http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardinput.aspx

  • Сериализуйте данные, сохраните их в файле, а другой процесс прочитает этот файл, передав путь к файлу в аргументах.

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

0 голосов
/ 07 августа 2010

Как определено, свойство Arguments имеет тип string , поэтому вы можете передавать аргументы с разделителями-пробелами в процесс так же, как при вызове его из командной строки.

0 голосов
/ 07 августа 2010

Нет, это невозможно.

Вам следует подумать о создании нового домена приложений в существующем процессе.

0 голосов
/ 07 августа 2010

Аргументы - это именно то, что вы ввели бы (с начальными и конечными кавычками), если вы запускали .exe из командной строки.

Использовать строки.

...