본문 바로가기

デベロップメント/Win32 API

커맨드 라인 인수

원문 http://wisdom.sakura.ne.jp/system/winapi/win32/win6.html



기동(起動) 시의 인수(引数)

C언어의 콘솔 프로그래밍에서는 main() 함수가 인수를 받았습니다.

main() 함수는 인수 argv[]를 두번째 인수로 받습니다.


그러면 WinMain() 함수는 세번째 인수로 인수를 받고 있습니다.

커맨드 라인에서의 구성이나 파일의 D&D에서의 구성에 어플리케이션이 대응하는 것이 가능합니다.


WinMain()의 세번째 인수는 배열할 필요가 없습니다.

토큰의 분해를 하지 않고, 스페이스도 포함한 한개의 문자열로써 저장합니다.

#include

int WINAPI WinMain(
		HINSTANCE hInstance ,
		HINSTANCE hPrevInstance ,
		PSTR lpCmdLine ,
		int nCmdShow ) {
	MessageBox(NULL , lpCmdLine , TEXT("Kitty") , MB_ICONINFORMATION);
	return 0;
}

커맨드 라인에서의 인수를 메세지 박스에 표시합니다.

실행 파일에 데이터파일 같은것을 D&D해주세요.

파일 명(名)이 풀 패스로 메세지 박스에 표시됩니다.



함수에서 얻기

WinMain() 함수에서 커맨드 라인에 액세스 하는 것이 가능합니다

전용 GetCommandLine() 함수에서 얻는 것도 가능합니다.


어떤 것보다도, WinMain의 세번째 인수는 프로그램 본체(本体)의 인수를 얻을 수 없습니다.

하지만, GetCommandLine()에서는 실행 파일의 이름을 얻을 수 있습니다.


LPTSTR GetCommandLine(VOID)


LPTSTR은 TCHAR의 포인터 형(型)입니다.

이 함수는 기동시의 커맨드 라인 인수를 반환합니다.

그 때문에, 국제용 소스에서는 이 방법이 좋겠네요.

#include

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
		 PSTR pCmdLine , int nCmdShow ) {
	MessageBox(NULL , GetCommandLine() ,
			TEXT("Kitty") , MB_ICONINFORMATION);
	return 0;
}

이 프로그램에서는 프로그램 본체의 풀 패스도 표시합니다.



LPTSTR GetCommandLine(VOID)

현재의 프로세스에 커맨드 라인 문자열을 반환합니다.


반환 값 - 커맨드 라인 문자열에 대한 포인터를 반환합니다.




이전 페이지
목차
다음 페이지