이것저것/My_Work

[MFC] - CreateProcess()

우담바라 2009. 4. 3. 15:24



// 함수 원형 //

BOOL
CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  LPSTARTUPINFO lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);
 
Parameters 의 의미는 MSDN을 참고!!


부모 프로세스에서 CreateProcess()를 이용하여 자식 프로세스를 만들어 줄수 있는데,

일반적으로 다음과 같이 사용을 한다.

if(!CreateProcess(  NULL ,
                              "C:\\Program Files\\TEST_Program\\Test Manager.exe",
                              NULL,
                              NULL,
                              
FALSE,
                              
0,
                              NULL,
                              NULL ,
                              &si,
                              
&pi))
}


보통 별 무리 없이 잘 사용했는데....
어떤 프로그램의 경우 프로그램은 실행되나, 정상적으로 동작을 하지 않는 경우가 발생했다.
버튼을 눌러도 반응이 없거나 등등...

이럴 경우 8번째 인자의 값을 수정해서 정상 동작 하는 것을 확인하였다.

"LPCTSTR lpCurrentDirectory "
생성하는 프로세스의 현재 디랙터리를 설정( NULL = 부모 프로세스의 현재 디랙터리)

//수정//
if(!CreateProcess(  NULL ,
                              "C:\\Program Files\\TEST_Program\\Test Manager.exe",
                              NULL,
                              NULL,
                              
FALSE,
                              
0,
                              NULL,
                               "C:\\Program Files\\TEST_Program\\"
                              &si,
                              
&pi))
}