[WinAPI] 외부 프로그램&파일 실행하기, ShellExecute 사용 예제

오늘은 ShellExecute 사용법을 알아보겠습니다.

함수 원형은 아래와 같습니다.

HINSTANCE ShellExecuteA(
  HWND   hwnd,	// 오류 메시지를 표시하는데 사용되는 상위 창 핸들
  LPCSTR lpOperation, // 명령(열기(open), 탐색(explore), 인쇄(print), 찾기(find), 편집(edit))
  LPCSTR lpFile, // 경로
  LPCSTR lpParameters, // 전달 인자
  LPCSTR lpDirectory, // 디렉토리
  INT    nShowCmd // 옵션
);
1. open

– 응용프로그램 열기

ShellExecute에 카카오톡.exe가 존재하는 경로를 아래와 같이 입력하면 프로그램이 실행 됩니다.

::ShellExecute( NULL, _T( "open" ), _T( "C:\\Program Files (x86)\\Kakao\\KakaoTalk\\KakaoTalk.exe" ), NULL, NULL, SW_SHOW );

– 폴더 열기

open은 파일탐색기(explorer.exe)에 경로를 지정하여 실행 할 수 있습니다.

::ShellExecute( NULL, _T( "open" ), _T( "explorer.exe" ), _T( "c:\\" ), NULL, SW_SHOW );

아래와 같이 코딩하면 해당 폴더를 선택할 수 있습니다.

::ShellExecute( NULL, _T( "open" ), _T( "explorer.exe" ), _T( "/select,c:\\" ), NULL, SW_SHOW );

– 인터넷 익스플로러 실행

open으로 특정 주소의 웹 페이지를 열 수 있습니다.

::ShellExecute( NULL, _T( "open" ), _T( "https://3001ssw.com" ), NULL, NULL, SW_SHOW );

아래와 같은 방법으로 웹 브라우저를 선택해서 열 수 있습니다.

::ShellExecute( NULL, _T( "open" ), _T( "iexplore.exe" ),  _T( "https://3001ssw.com" ), NULL, SW_SHOW );
::ShellExecute( NULL, _T( "open" ), _T( "chrome.exe" ),  _T( "https://3001ssw.com" ), NULL, SW_SHOW );
2. explore

explore 명령어로도 파일 탐색기를 열 수 있습니다.

::ShellExecute( NULL, _T( "explore" ), _T( "c:\\" ), NULL, NULL, SW_SHOW );
3. print

아래와 같이 특정 파일을 인자로 넣고 인쇄를 할 수 있습니다.

::ShellExecute( NULL, _T( "print" ), _T( "C:\\TEST.txt" ), NULL, NULL, SW_SHOW );
4. find

해당 폴더 위치에서 검색 화면을 실행 할 수 있습니다.

::ShellExecute( NULL, _T( "find" ), _T( "c:\\TestDirectory" ), NULL, NULL, SW_SHOW );
5. edit

아래와 같이 특정 파일을 편집할 수 있습니다.

ShellExecute( NULL, _T( "edit" ), _T( "C:\\TEST.txt" ), NULL, NULL, SW_SHOW );