본문 바로가기
C & C++/C & C++

다른 프로그램 제어하기(2)

by izen8 2011. 11. 17.
반응형

다른 프로그램 제어하기(2)

  
[ 외부프로그램 제어 ]
 
 

Dos 프로그램의 경우 하나의 프로세서에 하나의 프로그램만이 동작을 합니다. 그러나 윈도우 프로그램의 경우 여러개의 프로그램이 동작할 수가 있죠 ? 별개의 프로그램의 경우에는 그 상황이 별로 문제가 되지 않지만, 만약 어떤 프로그램내에서 다른 프로그램의 실행을 생성한 경우는 가끔 문제가 되는 경우가 생깁니다. 예를 들어 HTML편집기에서 그 소스를 메모장으로 보내는 프로그램이 있다고 생각해 봅시다. 그럴 경우 편집기에서는 메모장을 생성하고, html태그들을 메모장으로 보냅니다. 순서적으로는 문제가 되지 않지만, 메모장 생성이 조금 느린 경우에는 문제가 생길 수 있습니다. 즉, 메모장을 실행할 수 있는 상태가 된 후에야, 데이터를 보낼 수 있는 방식이 필요하다는의미가 됩니다. 이럴 경우에 아래와 같은 형식으로 제어를 할 수 있습니다.

 
 

STARTUPINFO suinfo;
PROCESS_INFORMATION pinfo;
ZeroMemory(&suinfo, sizeof(suinfo));
sui.cb=sizeof(suinfo);
CreateProcess(NULL, "c:\\win\\notepad.exe", NULL, NULL, TRUE, 0, NULL, NULL, &suinfo, &pinfo);
WaitForInputIdle(pinfo.hProcess, INFINITE);
 

 

코드자체는 단순합니다. 순서적으로, 메모장의 실행을 생성하고, 그 프로세서가 실행가능한 상태가 될 때까지 아이들(WaitForInputIdle)상태에 머물 게 됩니다. 메모장이 윈도우화면에 나타났을 때, 메모장을 사용할 수 있습니다.

반응형

댓글