C++의 shellExecute() 함수

Naila Saad Siddiqui 2023년10월12일
  1. C++의 ShellExecute() 함수
  2. ShellExecute() 함수 사용의 이점
  3. ShellExecute() 함수 사용의 단점
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과 비슷합니다.

생성된 프로그램이 완료되면 표시할 수 없습니다.

관련 문장 - C++ Function