다음을 통해 공유


ShellExecuteA 함수(shellapi.h)

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

통사론

HINSTANCE ShellExecuteA(
  [in, optional] HWND   hwnd,
  [in, optional] LPCSTR lpOperation,
  [in]           LPCSTR lpFile,
  [in, optional] LPCSTR lpParameters,
  [in, optional] LPCSTR lpDirectory,
  [in]           INT    nShowCmd
);

매개 변수

[in, optional] hwnd

형식: HWND

UI 또는 오류 메시지를 표시하는 데 사용되는 부모 창에 대한 핸들입니다. 이 값은 작업이 창과 연결되지 않은 경우 NULL 수 있습니다.

[in, optional] lpOperation

형식: LPCTSTR

이 경우 수행할 작업을 지정하는 동사참조되는 null종료 문자열에 대한 포인터입니다. 사용 가능한 동사 집합은 특정 파일 또는 폴더에 따라 달라집니다. 일반적으로 개체의 바로 가기 메뉴에서 사용할 수 있는 동작은 동사를 사용할 수 있습니다. 일반적으로 사용되는 동사는 다음과 같습니다.

편집하다

편집기를 시작하고 편집할 문서를 엽니다. lpFile 문서 파일이 아니면 함수가 실패합니다.

탐험하다

lpFile지정한 폴더를 탐색합니다.

찾아내다

lpDirectory지정된 디렉터리에서 시작하는 검색을 시작합니다.

열다

lpFile 매개 변수로 지정된 항목을 엽니다. 항목은 파일 또는 폴더일 수 있습니다.

인쇄하다

lpFile지정한 파일을 인쇄합니다. lpFile 문서 파일이 아니면 함수가 실패합니다.

runas

관리자 권한으로 애플리케이션을 시작합니다. UAC(사용자 계정 컨트롤)는 관리자 권한으로 애플리케이션을 실행하는 데 동의하라는 메시지를 표시하거나 애플리케이션을 실행하는 데 사용되는 관리자 계정의 자격 증명을 입력합니다.

기본 동사가 사용 가능한 경우 사용됩니다. 그렇지 않은 경우 "open" 동사가 사용됩니다. 두 동사를 모두 사용할 수 없는 경우 시스템은 레지스트리에 나열된 첫 번째 동사를 사용합니다.

[in] lpFile

형식: LPCTSTR

지정된 동사를 실행할 파일 또는 개체를 지정하는 null종결 문자열에 대한 포인터입니다. Shell 네임스페이스 개체를 지정하려면 정규화된 구문 분석 이름을 전달합니다. 모든 동사가 모든 개체에서 지원되는 것은 아닙니다. 예를 들어 모든 문서 형식이 "인쇄" 동사를 지원하지는 않습니다. lpDirectory 매개 변수에 상대 경로가 사용되는 경우 lpFile상대 경로를 사용하지 마세요.

[in, optional] lpParameters

형식: LPCTSTR

lpFile 실행 파일을 지정하는 경우 이 매개 변수는 애플리케이션에 전달할 매개 변수를 지정하는 null종료된 문자열에 대한 포인터입니다. 이 문자열의 형식은 호출할 동사에 의해 결정됩니다. lpFile 문서 파일을 지정하는 경우 lpParameters NULL합니다.

[in, optional] lpDirectory

형식: LPCTSTR

작업의 기본(작업) 디렉터리를 지정하는 null종료된 문자열에 대한 포인터입니다. 이 값이 NULL경우 현재 작업 디렉터리가 사용됩니다. lpFile상대 경로가 제공되는 경우 lpDirectory상대 경로를 사용하지 마세요.

[in] nShowCmd

형식: INT

애플리케이션을 열 때 표시할 방법을 지정하는 플래그입니다. lpFile 문서 파일을 지정하는 경우 플래그는 단순히 연결된 애플리케이션에 전달됩니다. 처리 방법을 결정하는 것은 애플리케이션에 달려 있습니다. ShowWindow 함수에 대한 nCmdShow 매개 변수에 지정할 수 있는 값일 수 있습니다.

반환 값

형식: HINSTANCE

함수가 성공하면 32보다 큰 값을 반환합니다. 함수가 실패하면 오류의 원인을 나타내는 오류 값이 반환됩니다. 반환 값은 16비트 Windows 애플리케이션과의 이전 버전과의 호환성을 위해 HINSTANCE로 캐스팅됩니다. 그러나 그것은 진정한 HINSTANCE가 아닙니다. INT_PTR만 캐스팅할 수 있으며 아래의 32개 또는 다음 오류 코드와 비교할 수 있습니다.

반환 코드 묘사
0
운영 체제의 메모리가 부족하거나 리소스가 부족합니다.
ERROR_FILE_NOT_FOUND
지정한 파일을 찾을 수 없습니다.
ERROR_PATH_NOT_FOUND
지정한 경로를 찾을 수 없습니다.
ERROR_BAD_FORMAT
.exe 파일이 잘못되었습니다(.exe 이미지의 비 Win32 .exe 또는 오류).
SE_ERR_ACCESSDENIED
운영 체제에서 지정된 파일에 대한 액세스를 거부했습니다.
SE_ERR_ASSOCINCOMPLETE
파일 이름 연결이 불완전하거나 잘못되었습니다.
SE_ERR_DDEBUSY
다른 DDE 트랜잭션이 처리 중이므로 DDE 트랜잭션을 완료할 수 없습니다.
SE_ERR_DDEFAIL
DDE 트랜잭션이 실패했습니다.
SE_ERR_DDETIMEOUT
요청 시간이 초과되어 DDE 트랜잭션을 완료할 수 없습니다.
SE_ERR_DLLNOTFOUND
지정된 DLL을 찾을 수 없습니다.
SE_ERR_FNF
지정한 파일을 찾을 수 없습니다.
SE_ERR_NOASSOC
지정된 파일 이름 확장명과 연결된 애플리케이션이 없습니다. 인쇄할 수 없는 파일을 인쇄하려고 하면 이 오류도 반환됩니다.
SE_ERR_OOM
메모리가 부족하여 작업을 완료할 수 없습니다.
SE_ERR_PNF
지정한 경로를 찾을 수 없습니다.
SE_ERR_SHARE
공유 위반이 발생했습니다.

확장 오류 정보는 GetLastError 호출합니다.

발언

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

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

ShellExecute 이러한 유형의 셸 확장 중 하나를 사용하지 않고 해당 인스턴스에서 COM을 초기화할 필요가 없는 경우가 분명히 있습니다. 그럼에도 불구하고 이 함수를 사용하기 전에 항상 COM을 초기화하는 것이 좋습니다.

이 메서드를 사용하면 폴더의 바로 가기 메뉴에서 또는 레지스트리에 저장된 모든 명령을 실행할 수 있습니다.

폴더를 열려면 다음 호출 중 하나를 사용합니다.

ShellExecute(handle, NULL, <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

또는

ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

폴더를 탐색하려면 다음 호출을 사용합니다.

ShellExecute(handle, "explore", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

디렉터리에 대한 Shell의 Find 유틸리티를 시작하려면 다음 호출을 사용합니다.

ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);

lpOperation NULL경우 함수는 lpFile지정된 파일을 엽니다. lpOperation "열기" 또는 "탐색"인 경우 함수는 폴더를 열거나 탐색하려고 시도합니다.

ShellExecute호출한 결과로 시작된 애플리케이션에 대한 정보를 가져오려면 ShellExecuteEx사용합니다.

참고 폴더 옵션의 별도 프로세스 설정에서 폴더 시작 창은 ShellExecute영향을 줍니다. 해당 옵션을 사용하지 않도록 설정(기본 설정)하는 경우 ShellExecute 새 창을 시작하는 대신 열려 있는 탐색기 창을 사용합니다. 탐색기 창이 열려 있지 않으면 ShellExecute 새 창을 시작합니다.
 

메모

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

요구 사항

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

참고 항목

CoInitializeEx

CreateProcessA

IShellExecuteHook

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

ShellExecuteEx