Страница: 1 |
Страница: 1 |
Вопрос: CMD
Добавлено: 23.03.10 14:12
Автор вопроса: VβÐUηìt | Web-сайт:
Задача предельно проста: есть командная произвольная строка с параметрами. Можт не быть адреса, может и быть, может быть с расширением, а может и без,может в кавычках, а может и без. Нужно тупо это запустить :) С параметрами. Щас я беру строку, нахожу в ней файл, нахожу параметры, создаю процесс с этими параметрами и запускаю.
Чтобы узнать путь к проге набросал такую расту:
{
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
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 23.03.10 14:52
Познай System.IO.Path и с путями,расширениями,папками,названиями файлов и прочей лабудой станет легче.. а вот с параметрами тут уж кто во что горазд... Стандартного ничего нет.. регулярки,парсинг и т.д..
Обычно достаточно использовтаь Split чтоб получить набор ключей параметром.. а дальше уж разберешься..
Номер ответа: 2
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 23.03.10 14:57
Сенкс
Номер ответа: 3
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #3
Добавлено: 23.03.10 22:14
Эм... Расты, тут все намного проще))
Как я сразу не догадался)
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 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
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #5
Добавлено: 24.03.10 16:51
Фишка не в том, что надо стартануть процесс с параметрами, а в том, что эти параметры, мать их, в одну строку написаны (ибо считаны с реестра). Их надо разделять (ужасный черезжопупарсинг), а потом уже подсовывать вышеописанной тобой расте. И меня, кстати очень удивило, что в винде для этого нет оддельной функции (вроде).
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 25.03.10 15:05
что то я недогоняю твоих проблем.. эти параметры и надо передвать одной строкой!!
ты чего там вообще мудришь?
Номер ответа: 7
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #7
Добавлено: 25.03.10 15:16
Параметры там вместе с именем файла в одной строке. Ну тобиш не
а
.
Такое Process.Start не понимает
Номер ответа: 8
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #8
Добавлено: 25.03.10 15:41
И там еще совсем ужас бывает такого рода:
А такой ужос парсить страшно. Лучше банальным WinExec.