다음을 통해 공유


ShellExecuteExW 함수(shellapi.h)

지정된 파일에 대한 작업을 수행합니다.

통사론

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *pExecInfo
);

매개 변수

[in, out] pExecInfo

형식: SHELLEXECUTEINFO*

실행 중인 애플리케이션에 대한 정보를 포함하고 받는 SHELLEXECUTEINFO 구조체에 대한 포인터입니다.

반환 값

형식: BOOL

성공하면 TRUE 반환합니다. 그렇지 않으면 FALSE. 확장 오류 정보는 GetLastError 호출합니다.

발언

ShellExecuteEx COM(구성 요소 개체 모델)을 사용하여 활성화된 셸 확장(데이터 원본, 상황에 맞는 메뉴 처리기, 동사 구현)에 실행을 위임할 수 있으므로 ShellExecuteEx 호출되기 전에 COM을 초기화해야 합니다. 일부 셸 확장에는 COM STA(단일 스레드 아파트) 유형이 필요합니다. 이 경우 COM은 다음과 같이 초기화되어야 합니다.

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

ShellExecuteEx 이러한 유형의 셸 확장 중 하나를 사용하지 않고 해당 인스턴스에서 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사용합니다. 다음 값 중 하나를 반환할 수 있습니다.

오류 묘사
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를 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shellapi.h
라이브러리 Shell32.lib
DLL Shell32.dll(버전 3.51 이상)

참고 항목

CoInitializeEx

IShellExecuteHook

애플리케이션 시작(ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute