본문 바로가기
프레임워크/MFC

[MFC] 외부 프로그램 실행 예제 (CreateProcess, ShellExecute)

by 연어바케트 2022. 7. 21.
반응형

MFC에서 외부프로그램 (exe) 파일을 실행하기 위한 예제 정리. 

 

1. CreateProcess

  • 함수 원형
BOOL CreateProcess(
    LPCWSTR lpApplicationName,    // 생성될 프로세스의 이름
    LPWSTR lpCommandLine,      // 생성될 프로세스에 인자 전달
    LPSECURITY_ATTRIBUTES lpProcessAttributes, //프로세스 옵션
    LPSECURITY_ATTRIBUTES lpThreadAttributes, //쓰레드 옵션
    BOOL bInheritHandles,   //TRUE:부모 프로세스 핸들상속
    DWORD dwCreationFlags,  //생성하는 프로세스의 특성
    LPVOID lpEnvironment, //부모프로세스의 환경 블록 복사
    LPCWSTR lpCurrentDirectory, //lpCommandLine 사용시 시작 디텍토리
    //STARTUPINFO  structure
    LPSTARTUPINFOW lpStartupInfo, 
    //PROCESS_INFORMATION structure
    LPPROCESS_INFORMATION lpProcessInformation 
    );

 

  • 예제
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);

TCHAR path[MAX_PATH] = _T("C:\\Program Files (x86)\\Kakao\\KakaoTalk\\KakaoTalk.exe");
bool state = CreateProcess(nullptr, path, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi);

위의 예제를 실행하면 카카오톡이 실행되는 것을 확인 할 수 있음.

반응형

2.ShellExecute

  • 함수원형
HINSTANCE ShellExecute(
    HWND hwnd, // 부모 윈도우 handle
    LPCWSTR lpOperation, //열기, 탐색, 인쇄, 찾기 등등
    LPCWSTR lpFile, // 경로
    LPCWSTR lpParameters,
    LPCWSTR lpDirectory,
    INT nShowCmd //보여주기 옵션
);

 

  • 예제
    - 응용프로그램 열기
TCHAR strExeFileName[MAX_PATH] = _T("C:\\Program Files (x86)\\Kakao\\KakaoTalk\\KakaoTalk.exe");
HINSTANCE hErr = ShellExecute(NULL, _T("open"), strExeFileName, NULL, NULL, SW_SHOW);

 

위의 예제를 실행하면 카카오톡이 실행되는 것을 확인 할 수 있음.

 

       - 크롬 실행

strExeFileName = _T("chrome.exe");
HINSTANCE hErr = ShellExecute(NULL, _T("open"), strExeFileName, _T("http://naver.com"), NULL, SW_SHOW);

크롬으로 네이버가 실행되는 것을 확인 할 수 있음

edit 편집기 시작, 편집할 문서 열기
explore 폴더 탐색
find 지정된 디텍토리 검색
open 지정된 항목 열기
print 지정된 파일 인쇄
반응형

댓글