C++의 shellExecute() 함수
이 간단한 프로그래밍 자습서에서는 C++의 ShellExecute()
라이브러리 함수에 대해 설명합니다. 이 라이브러리 기능은 주로 C++ 프로그램을 통해 파일(예: 스크립트 파일)을 열거나 실행하는 데 사용됩니다.
C++의 ShellExecute()
함수
ShellExecute()
는 C++ 표준 라이브러리에서 제공하는 라이브러리 함수로 C++ 프로그램에서 실행 파일을 열거나 실행하는 데 사용됩니다. 필요한 파일이 열리는 프로그램을 관리할 필요가 없습니다. 열려는 파일의 경로나 이름만 지정하면 됩니다.
마우스로 아이콘을 클릭하는 Windows의 동작과 유사하며 열리게 됩니다. 이는 C++ 프로그래밍을 사용하여 이 작업을 자동화하는 데 사용됩니다.
ShellExecute()
가 좋은 이유 중 하나는 거의 모든 것이 이 API 호출을 사용하여 실행될 수 있기 때문입니다.
제공된 파일이 실행 가능하지 않은 경우 ShellExecute
API는 레지스트리에서 지정된 파일을 실행할 적절한 프로그램을 검색합니다. 예를 들어 확장자가 .txt
인 파일 이름을 제공하면 파일이 로드된 상태로 메모장이 실행될 가능성이 높습니다.
함수의 서명은 다음과 같습니다.
HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile,
LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
매개변수의 세부사항을 살펴보겠습니다.
hwnd
: 상위 창에 대한 참조를 저장하기 위한 핸들입니다.lpOperation
: 파일에서 수행해야 하는 작업의 이름입니다. 다음은 사용할 수 있는 작업 목록입니다.open
또는NULL
-lpFile
파일이 함수에 의해 열립니다. 파일은 문서 파일 또는 실행 파일일 수 있습니다. 열 폴더 이름을 지정할 수도 있습니다.print
-lpFile
로 지정된 파일이 문서 파일인 경우 함수는 인쇄를 위해 프린터로 보냅니다.explore
-lpFile
로 지정된 파일이 폴더 이름이면 함수는 해당 폴더를 탐색합니다.
lpFile
: 파일, 폴더 또는 실행 파일의 이름입니다.lpParameters
: 추가 명령줄 매개변수를 제공하는 데 사용됩니다.lpDirectory
: 기본 디렉토리의 경로를 지정합니다.nShowCmd
함수에 지정된 파일을 여는 방법을 알려줍니다. 그 값은 다음 중 하나일 수 있습니다.SW_HIDE
- 현재 애플리케이션 창을 숨긴 후 새 애플리케이션 창을 표시합니다.W_MAXIMIZE
- 지정한 창을 최대화하여 보여줍니다.SW_MINIMIZE
- 지정한 창을 최소화하여 보여주고 다음 단계의 창을 표시합니다.SW_SHOW
- 지정된 창을 기본 크기와 위치로 활성화합니다.SW_SHOWMAXIMIZED
- 먼저 창을 활성화하고 최대화된 형태로 보여줍니다.SW_SHOWMINIMIZED
- 먼저 창을 활성화하고 최소화된 형태로 보여줍니다.SW_SHOWNORMAL
- 창을 활성화하고 표시합니다. Windows는 창을 최소화하거나 최대화한 경우 창을 원래 크기와 위치로 되돌립니다. 창이 처음 표시될 때 애플리케이션은 이 플래그를 제공해야 합니다.lpFile
이 지정된 문서 파일인 경우nShowCmd
값을 0으로 설정해야 합니다.
성공 시 ShellExecute()
는 31보다 큰 값을 반환합니다. 그렇지 않으면 반환 값은 다음과 같습니다.
0
: 운영 체제가 메모리 또는 리소스를 제공하지 않는 경우.ERROR_FILE_NOT_FOUND
– 지정한 파일이 해당 위치에 없습니다.ERROR_PATH_NOT_FOUND
– 지정된 경로가 잘못되었거나 찾을 수 없습니다.ERROR_BAD_FORMAT
– 잘못된.exe
파일이 제공되었습니다.
다른 많은 오류 코드가 있을 수도 있지만 몇 가지 일반적인 오류에 대해 설명했습니다.
ShellExecute()
함수의 코딩 예제를 살펴보겠습니다.
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main() {
ShellExecute(NULL, "open", "MyTextFile.txt", NULL, NULL, SW_SHOWMAXIMIZED);
return 0;
}
코드가 실행된 후 MyTextFile
이 메모장 프로그램에서 열립니다. 마찬가지로 다음과 같이 브라우저에서 열리는 URL도 제공할 수 있습니다.
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main() {
char webUrl[100] = "www.google.com";
ShellExecute(NULL, "open", webUrl, NULL, NULL, SW_SHOWNORMAL);
return 0;
}
ShellExecute()
함수를 사용하면 다음과 같은 많은 장점과 단점이 있습니다.
ShellExecute()
함수 사용의 이점
이 API 호출은 표준 Windows 설정을 사용하여 파일 또는 폴더를 열거나 인쇄하거나 찾아볼 수 있습니다. 이러한 기본값도 변경할 수 있습니다.
모든 매개변수를 입력해야 하는 것은 아닙니다. 그들 중 몇몇은 NULL일 수 있습니다(즉, 사용 용이성).
ShellExecute()
함수 사용의 단점
16비트 소프트웨어는 ShellExecute
를 통해 실행할 수 없습니다. 복잡도는 WinExec
과 비슷합니다.
생성된 프로그램이 완료되면 표시할 수 없습니다.