Страница: 1 |
Вопрос: CMD | Добавлено: 23.03.10 14:12 |
Автор вопроса: ![]() |
Задача предельно проста: есть командная произвольная строка с параметрами. Можт не быть адреса, может и быть, может быть с расширением, а может и без,может в кавычках, а может и без. Нужно тупо это запустить :) С параметрами. Щас я беру строку, нахожу в ней файл, нахожу параметры, создаю процесс с этими параметрами и запускаю.
Чтобы узнать путь к проге набросал такую расту: private static string GetProgram(string uc)
{ if (uc.Length == 0) return ""; string UninstallerPath = uc.Trim(); string result = ""; bool noexe = false; bool nodisk = false; int i = 0; if (UninstallerPath[0] == '\"') { result = UninstallerPath.Substring(1, UninstallerPath.IndexOf('\"', 3) - 1); if (result.IndexOf(',') > -1) result = result.Substring(0, result.IndexOf(',') - 1); } else result = UninstallerPath.ToLower(); if (result.IndexOf(".exe") == -1) noexe = true; if (UninstallerPath[1] != ':') nodisk = true; if (!noexe) result = result.Substring(0, result.IndexOf(".exe") + 4); if (noexe) result += ".exe"; if (nodisk) result = Environment.SystemDirectory + "\\" + result; return result; } С параметрами как быть? Так же криво через попу их искать? И вообще, чувствуется, что в .NET это делается, мягко говоря проще :) Заранее благодарен. |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #1 | Добавлено: 23.03.10 14:52 |
Познай System.IO.Path и с путями,расширениями,папками,названиями файлов и прочей лабудой станет легче.. а вот с параметрами тут уж кто во что горазд... Стандартного ничего нет.. регулярки,парсинг и т.д..
Обычно достаточно использовтаь Split чтоб получить набор ключей параметром.. а дальше уж разберешься.. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 23.03.10 14:57 |
Сенкс |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 23.03.10 22:14 |
Эм... Расты, тут все намного проще))
Как я сразу не догадался) |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #4 | Добавлено: 24.03.10 08:29 |
Ппц.. Вася, ты чего творишь? Нах тебе эта шляпа вообще сдалась?? Тебе надо стартануть процесс с параметрами? Ну так и скажи.. вроде не первый год на форуме а нормально задать вопрос не можешь..
public static System.Diagnostics.Process Start(string fileName, string arguments) Member of System.Diagnostics.Process Summary: Starts a process resource by specifying the name of an application and a set of command-line arguments, and associates the resource with a new System.Diagnostics.Process component. Parameters: fileName: The name of an application file to run in the process. arguments: Command-line arguments to pass when starting the process. Если надо управлять окном консоли.. скрытым сделать или еще чего то юзай другой конструктор с ProcessStartInfo Там можно что угодно сделать.. вплоть до того что перехватить stdIn.stdOut и т.д.. кроме того так же можно подписаться на нужные события, дождаться окончания завершение того процесса либо пусть работает ассинхронно и т.д.. Только не пиши тут больше такую шляпу.. не надо.. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 24.03.10 16:51 |
Фишка не в том, что надо стартануть процесс с параметрами, а в том, что эти параметры, мать их, в одну строку написаны (ибо считаны с реестра). Их надо разделять (ужасный черезжопупарсинг), а потом уже подсовывать вышеописанной тобой расте. И меня, кстати очень удивило, что в винде для этого нет оддельной функции (вроде). |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #6 | Добавлено: 25.03.10 15:05 |
а в том, что эти параметры, мать их, в одну строку написаны
что то я недогоняю твоих проблем.. эти параметры и надо передвать одной строкой!!
ты чего там вообще мудришь? |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 25.03.10 15:16 |
Параметры там вместе с именем файла в одной строке. Ну тобиш не
а
. Такое Process.Start не понимает |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 25.03.10 15:41 |
И там еще совсем ужас бывает такого рода:
А такой ужос парсить страшно. Лучше банальным WinExec. |
Страница: 1 |
|