다음을 통해 공유


ShellExecuteExW 함수(shellapi.h)

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

구문

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *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 이상)

추가 정보

CoInitializeEx

IShellExecuteHook

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

ShellExecute