ShellExecuteExA 함수(shellapi.h)
지정된 파일에 대한 작업을 수행합니다.
구문
BOOL ShellExecuteExA(
[in, out] SHELLEXECUTEINFOA *pExecInfo
);
매개 변수
[in, out] pExecInfo
형식: SHELLEXECUTEINFO*
실행 중인 애플리케이션에 대한 정보를 포함하고 받는 SHELLEXECUTEINFO 구조체에 대한 포인터입니다.
반환 값
형식: BOOL
성공하면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 확장된 오류 정보는 GetLastError 를 호출합니다.
설명
ShellExecuteEx는 COM(구성 요소 개체 모델)을 사용하여 활성화된 셸 확장(데이터 원본, 상황에 맞는 메뉴 처리기, 동사 구현)에 실행을 위임할 수 있으므로 ShellExecuteEx가 호출되기 전에 COM을 초기화해야 합니다. 일부 Shell 확장에는 COM STA(단일 스레드 아파트) 유형이 필요합니다. 이 경우 COM은 다음과 같이 초기화되어야 합니다.
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
ShellExecuteEx가 이러한 유형의 Shell 확장 중 하나를 사용하지 않고 해당 인스턴스에서 COM을 초기화할 필요가 없는 인스턴스가 있습니다. 그럼에도 불구하고 이 함수를 사용하기 전에 항상 COM을 초기화하는 것이 좋습니다.
프로세스에 DLL이 로드되면 로더 잠금이라는 잠금을 획득합니다. DllMain 함수는 항상 로더 잠금에서 실행됩니다. 로더 잠금을 유지하는 동안 ShellExecuteEx 를 호출하지 않는 것이 중요합니다. ShellExecuteEx는 확장 가능하므로 로더 잠금이 있을 때 제대로 작동하지 않는 코드를 로드하여 교착 상태가 발생할 위험이 있으므로 응답하지 않는 스레드가 발생할 수 있습니다.
여러 모니터에서 HWND를 지정하고 lpExecInfo가 가리키는 SHELLEXECUTEINFO 구조체의 lpVerb 멤버를 "속성"으로 설정하면 ShellExecuteEx에서 만든 모든 창이 올바른 위치에 나타나지 않을 수 있습니다.
함수가 성공하면 SHELLEXECUTEINFO 구조체의 hInstApp 멤버를 32보다 큰 값으로 설정합니다. 함수가 실패하면 hInstApp 은 오류의 원인을 가장 잘 나타내는 SE_ERR_XXX 오류 값으로 설정됩니다. hInstApp은 16비트 Windows 애플리케이션과의 호환성을 위해 HINSTANCE로 선언되지만 진정한 HINSTANCE는 아닙니다. int로만 캐스팅할 수 있으며 값 32 또는 SE_ERR_XXX 오류 코드와만 비교할 수 있습니다.
SE_ERR_XXX 오류 값은 ShellExecute와의 호환성을 위해 제공됩니다. 보다 정확한 오류 정보를 검색하려면 GetLastError를 사용합니다. 다음 값 중 하나를 반환할 수 있습니다.
오류 | Description |
---|---|
ERROR_FILE_NOT_FOUND | 지정된 파일을 찾을 수 없습니다. |
ERROR_PATH_NOT_FOUND | 지정된 경로를 찾을 수 없습니다. |
ERROR_DDE_FAIL | DDE(동적 데이터 교환) 트랜잭션이 실패했습니다. |
ERROR_NO_ASSOCIATION | 지정된 파일 이름 확장명과 연결된 애플리케이션이 없습니다. |
ERROR_ACCESS_DENIED | 지정된 파일에 대한 액세스가 거부되었습니다. |
ERROR_DLL_NOT_FOUND | 애플리케이션을 실행하는 데 필요한 라이브러리 파일 중 하나를 찾을 수 없습니다. |
ERROR_CANCELLED | 함수는 사용자에게 추가 정보를 묻는 메시지를 표시했지만 사용자가 요청을 취소했습니다. |
ERROR_NOT_ENOUGH_MEMORY | 지정된 작업을 수행하기에 충분한 메모리가 없습니다. |
ERROR_SHARING_VIOLATION | 공유 위반이 발생했습니다. |
URL에서 항목 열기 전달된 URL을 활성화하도록 애플리케이션을 등록할 수 있습니다. 애플리케이션에서 지원하는 프로토콜을 지정할 수도 있습니다. 자세한 내용은 애플리케이션 등록 을 참조하세요.
사이트 체인 지원 Windows 8부터 ShellExecuteEx 함수에 대한 사이트 체인 포인터를 제공하여 해당 사이트의 서비스에서 항목 활성화를 지원할 수 있습니다. 자세한 내용은 애플리케이션 시작(ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO) 을 참조하세요.
참고
shellapi.h 헤더는 SHELLExecuteEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | shellapi.h |
라이브러리 | Shell32.lib |
DLL | Shell32.dll(버전 3.51 이상) |