CreateProcess 함수 예제 소스코드
/*
* made by so_Sal
*/
CreateProcess 라는 함수를 이용하여
Notepad를 실행시키는 간단한 소스입니다.
이해가 가지 않는 부분이 있다면
아래 링크를 참조하세요.
LINK_
====================== CreateProcess ======================
#include<stdio.h>
#include<windows.h>
#include<tchar.h>
#define DIR_LEN BUFSIZ
//BUFSIZ는 운영체제마다 다른 크기를 가지고 있습니다.
//한번 크기를 출력해보시는것도 좋겠네요.
int _tmain(int argc, TCHAR* argv[]){
STARTUPINFO si = {0,}; //구조체 선언, 초기화
PROCESS_INFORMATION pi;
si.cb = sizeof(si);
si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE;
//Flags 값들이 여러가지가 있습니다.
//STARTF_USEPOSITION :: dwX, dwY 위치 사용
//STARTF_USESIZE :: dwXSize, dwYSize 사용
//Flags 값이 주어지지 않는 si구조체 값은
//새로 만들어지는 프로세스에 영향을 주지 않습니다.
si.dwX = 100;
si.dwY = 100;
si.dwXSize = 300;
si.dwYSize = 300; //dw ~ 는 사실 잘 쓰이지 않습니다.
si.lpTitle = _T(" Child process! ");
TCHAR command[] = _T("notepad 10 10");
//10 10은 argv[]로 들어가겠죠, 아래 결과를 보시면
//notepad의 이름으로 들어간다는걸 확인하실 수 있습니다.
BOOL state;
state = CreateProcess(
NULL, //여기에 이름을 넣을 수 있습니다.
command, // 경로를 System에 해줬기 때문에 notepad가 열릴 수 있죠!
NULL,NULL,
TRUE, //부모프로세스중 상속가능한 핸들 상속
CREATE_NEW_CONSOLE, //dwCreationFlags
NULL,NULL,
&si, //STARTUPINFO 구조체 정보를 위에서 만들어줬죠.
&pi //이젠 프로세스의 정보를 가져올때 이 구조체를 사용!
);
if(state!=0){
_fputts(_T("Creation OK! \n"), stdout);
}
else{
_fputts(_T("Creation Fail! \n"), stdout);
}
return 0;
}