Hi~ Summers!!

외부 프로그램 실행 본문

개발/VC++

외부 프로그램 실행

eNaNII 2006. 2. 16. 16:39
외부프로그램을실행하고초기화될때까지기다려주는함수입니다.

초기화되기전까지는FindWindow로윈도우핸들이안얻어지기

때문에유용합니다.WaitForInputIdle을WaitForSingleObject로

바꾸면실행이끝날때까지기다려줄수도있습니다.


BOOLCreateProcessAndWait(LPCSTRpFileName,LPCSTRpCmdLine)
{
PROCESS_INFORMATIONProcessInfo;
STARTUPINFOStartupInfo;
TCHARPathName[MAX_PATH];
CStringCmdLine;

memset(&StartupInfo,NULL,sizeof(StartupInfo));
StartupInfo.cb=sizeof(STARTUPINFO);
if(strchr(pFileName,":"))//절대경로까지들어있는파일명이면
strcpy(PathName,pFileName);
else
{//그냥파일명이면
GetModuleFileName(AfxGetInstanceHandle(),PathName,MAX_PATH);
strcpy(strrchr(PathName,"")+1,pFileName);
}
CmdLine.Format(""%s"%s",PathName,pCmdLine);

if(!::CreateProcess(PathName,(LPSTR)(LPCSTR)CmdLine,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,
&ProcessInfo))
{
AfxMessageBox(CmdLine);
returnFALSE;
}

WaitForInputIdle(ProcessInfo.hProcess,INFINITE);
returnTRUE;
}
Comments