Разделить исполняемый путь и аргументы - PullRequest
1 голос
/ 09 февраля 2010

Мне нужно иметь возможность разделить путь к исполняемому файлу и аргументы в команде.

Windows легко обрабатывает следующее:

"notepad.exe C: \ testfile.txt"

"Блокнот c: \ testfolder \ versioninfo.txt"

"C: \ Windows \ notepad.exe" "C: \ test folder \ versioninfo.txt"

rundll "C \ Windows \ somelibrary.dll"

У кого-нибудь есть фрагмент кода для разбора таких строк?

Спасибо.

1 Ответ

0 голосов
/ 09 февраля 2010

Я использовал что-то подобное в прошлом:

char* lpCmdLine = ...;
char* lpArgs = lpCmdLine;
// skip leading spaces
while(isspace(*lpArgs))
    lpArgs++;
if(*lpArgs == '\"')
{
    // executable is quoted; skip to first space after matching quote
    lpArgs++;
    int quotes = 1;
    while(*lpArgs)
    {
        if(isspace(*lpArgs) && !quotes)
            break;
        if(*lpArgs == '\"')
            quotes = !quotes;
    }
}
else
{
    // executable is not quoted; skip to first space
    while(*lpArgs && !isspace(*lpArgs))
        lpArgs++;
}
// TODO: skip any spaces before the first arg
...