CommandLineToArgvW 함수(shellapi.h)
유니코드 명령줄 문자열을 구문 분석하고 표준 C 런타임 argv 및 argc 값과 유사한 방식으로 명령줄 인수에 대한 포인터 배열을 반환합니다.
구문
LPWSTR * CommandLineToArgvW(
[in] LPCWSTR lpCmdLine,
[out] int *pNumArgs
);
매개 변수
[in] lpCmdLine
형식: LPCWSTR
전체 명령줄을 포함하는 null로 끝나는 유니코드 문자열에 대한 포인터입니다. 이 매개 변수가 빈 문자열인 경우 함수는 현재 실행 파일의 경로를 반환합니다.
[out] pNumArgs
형식: int*
argc와 유사하게 반환된 배열 요소 수를 수신하는 int에 대한 포인터입니다.
반환 값
형식: LPWSTR*
argv와 유사한 LPWSTR 값 배열에 대한 포인터입니다.
함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
CommandLineToArgvW에서 반환되는 주소는 LPWSTR 값 배열에 있는 첫 번째 요소의 주소입니다. 이 배열의 포인터 수는 pNumArgs로 표시됩니다. null로 끝나는 유니코드 문자열에 대한 각 포인터는 명령줄에 있는 개별 인수를 나타냅니다.
CommandLineToArgvW 는 인수 문자열에 대한 포인터와 인수 문자열 자체에 대해 연속 메모리 블록을 할당합니다. 호출하는 애플리케이션은 더 이상 필요하지 않은 경우 인수 목록에서 사용하는 메모리를 해제해야 합니다. 메모리를 해제하려면 LocalFree 함수에 대한 단일 호출을 사용합니다.
argv 및 argc 인수 규칙에 대한 자세한 내용은 인수 정의 및 구문 분석 C Command-Line 인수를 참조하세요.
GetCommandLineW 함수를 사용하여 lpCmdLine 매개 변수로 사용하기에 적합한 명령줄 문자열을 가져올 수 있습니다.
이 함수는 프로그램 이름을 포함하는 명령줄을 허용합니다. 프로그램 이름은 따옴표로 묶을 수 있습니다.
CommandLineToArgvW 에는 백슬래시 문자 뒤에 따옴표 문자(")가 있을 때 특수한 해석이 있습니다. 이 해석에서는 이전 인수가 유효한 파일 시스템 경로이거나 예측 불가능하게 동작할 수 있다고 가정합니다.
이 특수 해석은 파서에서 추적하는 "따옴표 내" 모드를 제어합니다. 이 모드가 꺼져 있으면 공백이 현재 인수를 종료합니다. 설정하면 공백이 다른 모든 문자와 마찬가지로 인수에 추가됩니다.
- 2n 개의 백슬라시 뒤에 따옴표가 붙으면 n 개의 백슬라쉬와 시작/끝 따옴표가 붙습니다. 구문 분석된 인수의 일부가 아니라 "따옴표 안 함" 모드를 전환합니다.
- (2n) + 백슬라이시 1개, 따옴표 뒤에 따옴표가 다시 n 개 백슬라이시를 생성한 다음 따옴표 리터럴(")을 생성합니다. 이렇게 하면 "따옴표 안 함" 모드가 전환되지 않습니다.
- n 백슬라시 뒤에 따옴표가 붙지 않는 경우 n 개의 백슬라이시가 생성됩니다.
CommandLineToArgvW 는 공백을 따옴표 외부에 인수 구분 기호로 처리합니다. 그러나 lpCmdLine 이 공백의 양으로 시작하는 경우 CommandLineToArgvW 는 첫 번째 인수를 빈 문자열로 간주합니다. lpCmdLine의 끝에 있는 초과 공백은 무시됩니다.
예제
다음 예제에서는 유니코드 명령줄 문자열을 구문 분석하는 방법을 보여 줍니다. 코드는 종료 시 인수 목록의 메모리를 해제합니다.
#include <windows.h>
#include <stdio.h>
#include <shellapi.h>
int __cdecl main()
{
LPWSTR *szArglist;
int nArgs;
int i;
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL == szArglist )
{
wprintf(L"CommandLineToArgvW failed\n");
return 0;
}
else for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]);
// Free memory allocated for CommandLineToArgvW arguments.
LocalFree(szArglist);
return(1);
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional, Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server, Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | shellapi.h |
라이브러리 | Shell32.lib |
DLL | Shell32.dll(버전 6.0 이상) |