ShellExecute()에서 윈도우 핸들(Window handle)을 저장하는 코드

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 함수를 사용하여 프로세스 핸들을 닫아야 합니다.

다음 이전