댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
MFC
2010.12.13 15:13
MFC에서 커맨드 인자(cmd argument) 사용하기
조회 수 63760 댓글 0
프로세스가 시작할 때 넘겨받은 인자들은 m_lpCmdLine(CWinApp 클래스 멤버변수)에 들어있다. ( API에서 WinMain()의 lpCmdLine과 같음 )
인자를 사용하는 방법은 사용하는 위치에 따라 크게 2가지로 분류된다. (각각 2종류)
1. App클래스 (보통 InitInstance에서 ) App클래스의 InitInstance에서는 m_lpCmdLine를 직접 사용가능하다.
1-1. lpCmdLine를 이용하는 방법 m_lpCmdLine는 LPTSTR (TCHAR*)로 정의되어있으니 복사해서 쓰던지 알아서 쓰면 된다.
1-2. argc, argv를 직접 이용하는 방법 MFC내부에서 argc, argv를 __argc, __targv로 정의해놨다. (사용자환경에 따라 다를지도 모름)
__argc : 실행파일명을 포함한 총 인자 개수 __targv : 인자들을 담고 있는 문자 배열
ex) d:\TEMP\CmdTest\Debug\CmdTest.exe abc test 123 로 실행한 경우
int iCnt= __argc; // 4 LPCTSTR pszParam1 = __targv[0]; // d:\TEMP\CmdTest\Debug\CmdTest.exe CString str1(__targv[0]); // d:\TEMP\CmdTest\Debug\CmdTest.exe
2. App클래스가 아닌곳 간혹 app클래스가 아닌 다른 곳에서 m_lpCmdLine를 사용하고 싶을때가 있을수도 있다.
그럴 때는 GetCommandLine 함수를 쓰던가 CommandLineToArgvW를 쓸 수 있다.
2-1. GetCommandLine GetCommandLine은 실행 파일을 포함하는 full string(LPTSTR)을 넘겨준다. 그것을 잘라서 쓰면된다. ex)
2-2. CommandLineToArgvW CommandLineToArgvW은 인자를 각각 잘라서 담고 있는 배열(LPWSTR*)과 인자 개수를 알려준다. 주의 - MSDN에서는 넘겨받은 스트링을 나중에 해제 시키라고 설명하고 있다. ex) int iCnt = 0; LPWSTR* pStr = NULL; pStr = CommandLineToArgvW( GetCommandLine(), &iCnt); for(int i=0; i<iCnt; i++) { CString str; str.Format(L"%s", pStr[i]); //배열 처럼 쓸수있다. // pStr[0]은 실행파일. 1번부터가 인자 AfxMessageBox(str); } LocalFree(pStr); Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5