ShellExecute()에서 윈도우 핸들(Window handle)을 저장하는 코드
hInst = ShellExecute(NULL, "open", strPath, NULL, NULL, SW_SHOW); 의 코드에서 윈도우 핸들을 저장하는 코드는?
ShellExecute 함수는 새로운 프로세스를 실행하는데 사용되며, 해당 프로세스를 실행한 후 새로 생성된 프로세스의 핸들을 반환하지는 않습니다. 따라서 ShellExecute 함수 자체로는 직접 실행한 프로세스의 핸들을 얻을 수 없습니다.
하지만 ShellExecuteEx 함수를 사용하면 프로세스의 핸들을 얻을 수 있습니다. ShellExecuteEx 함수는 SHELLEXECUTEINFO 구조체를 인자로 받아 해당 프로세스를 실행하고, 그 결과로 새로 생성된 프로세스의 핸들을 얻을 수 있습니다.
다음은 ShellExecuteEx 함수를 사용하여 윈도우 핸들을 얻는 방법의 예시 코드입니다.
#include <Windows.h>
#include <Shellapi.h>
int main()
{
SHELLEXECUTEINFO info = { sizeof(SHELLEXECUTEINFO) };
info.lpVerb = _T("open");
info.lpFile = _T("YOUR_PROGRAM.EXE"); // 실행할 프로그램의 경로
info.nShow = SW_SHOW;
if (ShellExecuteEx(&info))
{
// 프로세스 실행 성공
// info.hProcess 변수에 새로 실행된 프로세스의 핸들이 저장됨
// 이 핸들을 사용하여 해당 프로세스와 상호작용할 수 있음
HANDLE hProcess = info.hProcess;
// 프로세스와 상호작용을 위한 추가 로직 작성
// ...
// 프로세스 종료
CloseHandle(hProcess);
}
else
{
// 프로세스 실행 실패
// 오류 처리
}
return 0;
}
위의 코드에서 info.hProcess 변수에 새로 생성된 프로세스의 핸들이 저장되며, 이를 사용하여 해당 프로세스와 상호작용할 수 있습니다. 주의해야 할 점은, ShellExecuteEx 함수가 프로세스를 실행한 후에는 적절히 해당 프로세스와 상호작용을 처리해야 하며, 마지막에 CloseHandle 함수를 사용하여 프로세스 핸들을 닫아야 합니다.