2008/07/17

명령행 파라메터 읽어오기

C++ 윈도우즈 프로그래밍에서 명령행 파라메터를 가져오기 위해서는 __argc, __argv 를 이용한다.

이 외에 이번 포스팅에서 소개할 방법은 API를 활용하는 방법이다.

아래의 API를 사용하게되면 UNICODE 의 경우에도 별다른 작업없이 파라메터를 사용할 수 있다.

명령행 문자열을 가져오는 함수
    LPWSTR WINAPI GetCommandLineW(void);

이 함수를 실행하면 경로를 포함한 프로그램 이름과 명령행 파라메터를 문자일로 반환한다.


명령행 문자열을 문자열 배열로 변환하는 함수
LPWSTR *CommandLineToArgvW(      
    LPCWSTR lpCmdLine,
    int *pNumArgs
);

이 함수는 명령행 문자열과 파라메터 개수를 저장을 정수형 포인터를 받아 명령행 문자열을 문자열 배열형태로 바꿔주고 이때 문자열 배열 개수를 넘겨준 포인터 변수에 할당한다.
MFC 에서는 그냥 사용하면 되지만 C++ Builder 에서는 ShellApi.h 를 포함시켜줘야한다.

간단한 예를 보는 것이 이해가 빠를 것이다.

    // 예) 모든 파라메터 출력하기

LPWSTR *szArglist;
int nArgs;
int i;

szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL == szArglist )
{
wprintf(L"CommandLineToArgvW failed\n");
}
else for( i = 0; i < nArgs; i++ ) TRACE("%d: %ws\n", i, szArglist[i]);

LocalFree(szArglist);



MSDN : GetCommandLine Function
MSDN : CommandLineToArgvW Function

Original Post : http://neodreamer-dev.tistory.com/125

No comments :

Post a Comment