this을 읽었으며 lpClass를 사용하여 "잘못된 파일 확장 문제"를 해결할 수 있음을 이해합니다. 그러나 다음 코드 줄을 읽을 때 실행 파일을 열 때 어떤 lpClass가 사용되는지 파악할 수 없습니다. lpVerb는 "개방"이고 lpFile 코드는 단순히 EXE를 실행 실행 exe 인 경우 lpClass없이ShellExecuteEx를 사용하여 실행 파일을 열고 lpClass도 지정합니까?
//code excerpt from foo.exe
SHELLEXECUTEINFO info;
ZeroMemory(&info, sizeof(SHELLEXECUTEINFO));
info.cbSize = sizeof(SHELLEXECUTEINFO);
info.nShow = SW_NORMAL;
info.lpVerb = L"open";
info.lpClass = L"ProgId Of foo.exe"; //what is this used for???
info.fMask = SEE_MASK_FLAG_LOG_USAGE | SEE_MASK_CLASSNAME;
info.lpFile = L"bar.exe";
info.lpParameters = lpszParam;
ShellExecuteEx(&info);
가 지정된다. 하지만이 경우처럼 lpClass가 지정되면 어떻게 될까요?
ProgId는 파일 연결에 사용되지 않습니다. Foo.exe는 해당 ProgId와 COM 서버로 등록되어 있으며 progid는 bar.exe를 SHELLEXECUTEINFO의 lpClass 멤버로 호출하는 데 사용됩니다 ... COM에 대한 경험이 거의 없습니다. 죄송합니다. ProgId 발신자 ** foo.exe **와 관련됩니다. – kennyzx
@kennyzx, 그건'ShellExecuteEx'가하는 것이 아닙니다. 당신은'CLSIDFromProgID'와'CoCreateInstance'를 원한다. COM 시스템은 올바르게 등록 된 경우 "bar.exe"를 시작합니다. – Ben