ShellExecuteExA-Funktion (shellapi.h)

Führt einen Vorgang für eine angegebene Datei aus.

Syntax

BOOL ShellExecuteExA(
  [in, out] SHELLEXECUTEINFOA *pExecInfo
);

Parameter

[in, out] pExecInfo

Typ: SHELLEXECUTEINFO*

Ein Zeiger auf eine SHELLEXECUTEINFO-Struktur , die Informationen über die ausgeführte Anwendung enthält und empfängt.

Rückgabewert

Typ: BOOL

Gibt TRUE zurück, wenn dies erfolgreich war. andernfalls FALSE. Rufen Sie GetLastError für erweiterte Fehlerinformationen auf.

Hinweise

Da ShellExecuteEx die Ausführung an Shell-Erweiterungen (Datenquellen, Kontextmenühandler, Verbimplementierungen) delegieren kann, die mithilfe des Component Object Model (COM) aktiviert werden, sollte COM initialisiert werden, bevor ShellExecuteEx aufgerufen wird. Für einige Shell-Erweiterungen ist der COM-Typ "Singlethreaded Apartment" (STA) erforderlich. In diesem Fall sollte COM wie hier gezeigt initialisiert werden:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Es gibt Instanzen, in denen ShellExecuteEx keinen dieser Arten von Shellerweiterungen verwendet, und für diese Instanzen muss COM überhaupt nicht initialisiert werden. Dennoch empfiehlt es sich, COM immer zu initialisieren, bevor Sie diese Funktion verwenden.

Wenn DLLs in Ihren Prozess geladen werden, erhalten Sie eine Sperre, die als Ladesperre bezeichnet wird. Die DllMain-Funktion wird immer unter der Ladeprogrammsperre ausgeführt. Es ist wichtig, dass Sie ShellExecuteEx nicht aufrufen, während Sie eine Ladesperre halten. Da ShellExecuteEx erweiterbar ist, können Sie Code laden, der in Gegenwart einer Ladeprogrammsperre nicht ordnungsgemäß funktioniert, wodurch ein Deadlock und damit ein nicht reagierender Thread riskiert werden.

Wenn Sie bei mehreren Monitoren einen HWND angeben und den lpVerb-Member der SHELLEXECUTEINFO-Struktur , auf die von lpExecInfo verwiesen wird, auf "Eigenschaften" festlegen, werden alle von ShellExecuteEx erstellten Fenster möglicherweise nicht an der richtigen Position angezeigt.

Wenn die Funktion erfolgreich ist, wird der hInstApp-Member der SHELLEXECUTEINFO-Struktur auf einen Wert größer als 32 festgelegt. Wenn die Funktion fehlschlägt, wird hInstApp auf den SE_ERR_XXX Fehlerwert festgelegt, der die Ursache des Fehlers am besten angibt. Obwohl hInstApp als HINSTANCE für die Kompatibilität mit 16-Bit-Windows-Anwendungen deklariert wird, handelt es sich nicht um eine echte HINSTANCE. Sie kann nur in ein int umgewandelt werden und kann nur mit dem Wert 32 oder den SE_ERR_XXX Fehlercodes verglichen werden.

Die SE_ERR_XXX Fehlerwerte werden aus Gründen der Kompatibilität mit ShellExecute bereitgestellt. Verwenden Sie GetLastError, um genauere Fehlerinformationen abzurufen. Es kann einen der folgenden Werte zurückgeben.

Fehler BESCHREIBUNG
ERROR_FILE_NOT_FOUND Die angegebene Datei wurde nicht gefunden.
ERROR_PATH_NOT_FOUND Der angegebene Pfad wurde nicht gefunden.
ERROR_DDE_FAIL Fehler bei der DDE-Transaktion (Dynamic Data Exchange).
ERROR_NO_ASSOCIATION Der angegebenen Dateinamenerweiterung ist keine Anwendung zugeordnet.
ERROR_ACCESS_DENIED Der Zugriff auf die angegebene Datei wird verweigert.
ERROR_DLL_NOT_FOUND Eine der Bibliotheksdateien, die zum Ausführen der Anwendung erforderlich sind, wurde nicht gefunden.
ERROR_CANCELLED Die Funktion hat den Benutzer zur Eingabe zusätzlicher Informationen aufgefordert, aber der Benutzer hat die Anforderung abgebrochen.
ERROR_NOT_ENOUGH_MEMORY Es ist nicht genügend Arbeitsspeicher vorhanden, um die angegebene Aktion auszuführen.
ERROR_SHARING_VIOLATION Ein Verstoß gegen die Freigabe ist aufgetreten.
 

Öffnen von Elementen aus einer URL Sie können Ihre Anwendung registrieren, um sie zu aktivieren, wenn URLs übergeben werden. Sie können auch angeben, welche Protokolle ihre Anwendung unterstützt. Weitere Informationen finden Sie unter Anwendungsregistrierung .

Unterstützung der Websitekette Ab Windows 8 können Sie einen Site Chain-Zeiger auf die ShellExecuteEx-Funktion bereitstellen, um die Elementaktivierung mit Diensten von diesem Standort zu unterstützen. Weitere Informationen finden Sie unter Starten von Anwendungen (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO).

Hinweis

Der Shellapi.h-Header definiert ShellExecuteEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shellapi.h
Bibliothek Shell32.lib
DLL Shell32.dll (Version 3.51 oder höher)

Weitere Informationen

CoInitializeEx

IShellExecuteHook

Starten von Anwendungen (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute