Отделение параметров
или 100% отделить параметры .ехе файла от самого имени файла ? Например как в строке "C:\Windows\cmd.exe -help" отделить "C:\Windows\cmd.exe" от "-help" ?
Как можно с большой вероятностью (по крайней мере)
или 100% отделить параметры .ехе файла от самого имени файла ? Например как в строке "C:\Windows\cmd.exe -help" отделить "C:\Windows\cmd.exe" от "-help" ?
Мне кажется, это легко.
Если в пути файла есть пробелы или специальные символы, то он должен быть заключён в кавычки или апострофы. Значит, анализируем командную строку так.
then ищем второй такой же;
Всё, что после — параметры;
else
Ищем пробел;
Всё, что после него — параметры
Мне кажется, это легко.
А не проще найти ".exe " в строке?
А не проще найти ".exe " в строке?
Можно и ".exe" поискать, но проше не получится. Всё равно придётся анализировать синтаксис, а то выйдут неувязки в следующих случаях:
1. если запускается не exe, а com, bat и пр.
2. если программа имеет имя xxx.executor.exe
3. если путь содержит ".exe"
...
Можно и ".exe" поискать, но проше не получится. Всё равно придётся анализировать синтаксис, а то выйдут неувязки в следующих случаях:
1. если запускается не exe, а com, bat и пр.
2. если программа имеет имя xxx.executor.exe
3. если путь содержит ".exe"
...
Вы не заметили. В конце ".exe " стоит пробел.
char *lcPos = NULL; //указ.на возм.нач.параметров
char *lcBuf = strstr(lcCmd, ".exe ");
while(lcBuf!=NULL)
{
lcPos = lcBuf + 5;
lcBuf = strstr(lcPos, ".exe ");
}
Вы не заметили. В конце ".exe " стоит пробел.
char *lcPos = NULL; //указ.на возм.нач.параметров
char *lcBuf = strstr(lcCmd, ".exe ");
while(lcBuf!=NULL)
{
lcPos = lcBuf + 5;
lcBuf = strstr(lcPos, ".exe ");
}
Любите же вы спорить, Mоngооsе ;) Там ещё может быть апостроф или кавычка, так что мы всё равно приходим к моему случаю... А ваш цикл будет неправильно работать со строкой
xxx.exe <параметры> yyy.exe <ещё параметры>
Любите же вы спорить, Mоngооsе ;) Там ещё может быть апостроф или кавычка, так что мы всё равно приходим к моему случаю... А ваш цикл будет неправильно работать со строкой
xxx.exe <параметры> yyy.exe <ещё параметры>
Может я люблю спорить, но в отличие от некоторых, я признаю, если не прав, и не вешаю лапшу науши. Меня смутил первый пункт Вашего алгоритма. Типа, если путь содержит спец.символы, тогда он заключается в кавычки. Теперь посмотрел. Неправильный второй пункт. Он лишний. Путь с именем файла всегда заключается в кавычки, если получаем его через GetCommandLine() (VisualC).
Может я люблю спорить, но в отличие от некоторых, я признаю, если не прав, и не вешаю лапшу науши. Меня смутил первый пункт Вашего алгоритма. Типа, если путь содержит спец.символы, тогда он заключается в кавычки. Теперь посмотрел. Неправильный второй пункт. Он лишний. Путь с именем файла всегда заключается в кавычки, если получаем его через GetCommandLine() (VisualC).
Ну давайте, давайте, давайте поспорим ещё :)
А если не через GetCommandLine, тогда что? А если чарез CWinApp::m_lpCmdLine? А если через PSP? А если через параметр WinMain(,,szCmdLine...)? А если программа на бейсике? А если на .NET?..
PS особенно вдохновляет ваше упоминание о лапше... «я могу что угодно приготовить, а они всё просят доширак»...
Ну давайте, давайте, давайте поспорим ещё :)
А если не через GetCommandLine, тогда что? А если чарез CWinApp::m_lpCmdLine? А если через PSP? А если через параметр WinMain(,,szCmdLine...)? А если программа на бейсике? А если на .NET?..
PS особенно вдохновляет ваше упоминание о лапше... «я могу что угодно приготовить, а они всё просят доширак»...
А это уже из области флюда. Такой спор не для меня. А на счет лапши, я имел в виду не Вас.