Die ShellExecute()-Funktion in C++

Naila Saad Siddiqui 12 Oktober 2023
  1. die ShellExecute()-Funktion in C++
  2. Vorteile der Verwendung der Funktion ShellExecute()
  3. Nachteile der Verwendung der Funktion ShellExecute()
Die ShellExecute()-Funktion in C++

Dieses kleine Programmier-Tutorial behandelt die Bibliotheksfunktion ShellExecute() in C++. Diese Bibliotheksfunktion wird hauptsächlich zum Öffnen oder Ausführen beliebiger Dateien (z. B. Skriptdateien) über ein C++-Programm verwendet.

die ShellExecute()-Funktion in C++

ShellExecute() ist eine Bibliotheksfunktion, die in der C++-Standardbibliothek bereitgestellt wird und zum Öffnen oder Ausführen einer beliebigen ausführbaren Datei aus dem C++-Programm verwendet wird. Sie müssen sich nicht um das Programm kümmern, in dem die gewünschte Datei geöffnet wird; Sie müssen nur den Pfad oder Namen der Datei angeben, die Sie öffnen müssen.

Es ähnelt der Aktion von Windows, mit der Maus auf ein Symbol zu klicken, und es wird geöffnet. Dies wird verwendet, um diese Aktion mithilfe der C++-Programmierung zu automatisieren.

Einer der Hauptgründe, warum ShellExecute() so beliebt ist, ist, dass fast alles mit diesem API-Aufruf ausgeführt werden kann.

Wenn die gelieferte Datei nicht ausführbar ist, durchsucht die ShellExecute-API die Registrierung nach einem geeigneten Programm, um die angegebene Datei zu starten. Wenn Sie beispielsweise einen Dateinamen mit der Erweiterung .txt angeben, wird Notepad wahrscheinlich mit der geladenen Datei gestartet.

Die Signatur der Funktion lautet:

HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile,
                       LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);

Schauen wir uns die Details der Parameter an:

  • hwnd: Es ist ein Handle zum Speichern der Referenz auf das übergeordnete Fenster
  • lpOperation: Dies ist der Name der Aktion, die für die Datei ausgeführt werden muss. Es folgt die Liste der Aktionen, die verwendet werden können:
    • open oder NULL - Die lpFile-Datei wird durch die Funktion geöffnet. Die Datei kann eine Dokumentdatei oder eine ausführbare Datei sein. Wir können auch einen zu öffnenden Ordnernamen angeben.
    • print - Wenn die durch lpFile angegebene Datei eine Dokumentdatei ist, sendet die Funktion sie zum Drucken an den Drucker.
    • explore – Wenn die durch lpFile angegebene Datei der Name des Ordners ist, durchsucht die Funktion diesen Ordner.
  • lpFile: Dies ist der Name einer Datei, eines Ordners oder einer ausführbaren Datei.
  • lpParameters: Wird verwendet, um zusätzliche Befehlszeilenparameter bereitzustellen.
  • lpDirectory: Hiermit wird der Pfad des Standardverzeichnisses angegeben.
  • nShowCmd Gibt an, wie die in der Funktion angegebene Datei geöffnet werden soll. Sein Wert kann einer der folgenden sein:
    • SW_HIDE - Zeigt das neue Anwendungsfenster an, nachdem das aktuelle ausgeblendet wurde.
    • W_MAXIMIZE - Zeigt das angegebene Fenster in maximierter Form an.
    • SW_MINIMIZE - Zeigt das angegebene Fenster in minimierter Form und zeigt das Fenster der nächsten Ebene an.
    • SW_SHOW - Aktiviert das angegebene Fenster in seiner Standardgröße und -position
    • SW_SHOWMAXIMIZED - Es aktiviert zuerst das Fenster und zeigt es in maximierter Form.
    • SW_SHOWMINIMIZED - Es aktiviert zuerst das Fenster und zeigt es in minimierter Form.
    • SW_SHOWNORMAL - aktiviert und zeigt ein Fenster. Windows stellt das Fenster auf seine ursprüngliche Größe und Position zurück, wenn es minimiert oder maximiert wird. Wenn ein Fenster zum ersten Mal angezeigt wird, muss eine Anwendung dieses Flag bereitstellen.
    • Wenn lpFile eine Dokumentdatei angegeben ist, dann sollte der nShowCmd-Wert auf 0 gesetzt werden.

Bei Erfolg gibt ShellExecute() einen Wert grösser als 31 zurück; Andernfalls kann sein Rückgabewert sein:

  • 0: Wenn das Betriebssystem keinen Speicher oder Ressourcen bereitstellt.
  • ERROR_FILE_NOT_FOUND – Die angegebene Datei wurde am Speicherort nicht gefunden.
  • ERROR_PATH_NOT_FOUND – Der angegebene Pfad ist falsch oder wurde nicht gefunden.
  • ERROR_BAD_FORMAT – Es wurde eine ungültige .exe-Datei bereitgestellt.

Es kann auch viele andere Fehlercodes geben, aber wir haben einige häufige Fehler besprochen.

Betrachten wir das Coding-Beispiel der Funktion ShellExecute():

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;

int main() {
  ShellExecute(NULL, "open", "MyTextFile.txt", NULL, NULL, SW_SHOWMAXIMIZED);
  return 0;
}

Nachdem der Code ausgeführt wurde, wird MyTextFile im Notepad-Programm geöffnet. Ebenso können wir auch eine URL bereitstellen, die im Browser wie folgt geöffnet wird:

#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;
}

Die Verwendung der Funktion ShellExecute() hat viele Vor- und Nachteile, nämlich:

Vorteile der Verwendung der Funktion ShellExecute()

Dieser API-Aufruf kann Dateien oder Ordner mit den standardmäßigen Windows-Einstellungen öffnen, drucken oder durchsuchen. Sie können diese Standardeinstellungen auch ändern.

Nicht alle Parameter müssen ausgefüllt werden; einige von ihnen können NULL sein (d. h. Benutzerfreundlichkeit).

Nachteile der Verwendung der Funktion ShellExecute()

16-Bit-Software kann nicht über ShellExecute ausgeführt werden. In der Komplexität vergleichbar mit WinExec.

Es kann nicht anzeigen, wann das generierte Programm abgeschlossen ist.

Verwandter Artikel - C++ Function