다른 프로그램 제어하기(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)상태에 머물 게 됩니다. 메모장이 윈도우화면에 나타났을 때, 메모장을 사용할 수 있습니다.
'C & C++ > C & C++' 카테고리의 다른 글
API함수를 이용한 컴퓨터 사용자명 알아오기 (0) | 2011.11.17 |
---|---|
현재 내 컴퓨터에 어떤 프로그램이 실행중인가 ? (0) | 2011.11.17 |
다른 프로그램 제어하기 (1) (0) | 2011.11.17 |
API함수를 이용한 해상도 조절하기 (0) | 2011.11.17 |
로그인인증 (ODBC) 구현해보자 (0) | 2011.11.03 |
댓글