프레임워크/MFC
[MFC] 외부 프로그램 실행 예제 (CreateProcess, ShellExecute)
연어바케트
2022. 7. 21. 17:15
반응형
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 | 지정된 항목 열기 |
지정된 파일 인쇄 |
반응형