Freigeben über


ShellExecuteExW-Funktion (shellapi.h)

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

Syntax

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *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 ist; andernfalls FALSE. Rufen Sie GetLastError- für erweiterte Fehlerinformationen auf.

Bemerkungen

Da ShellExecuteEx- die Ausführung an Shell-Erweiterungen (Datenquellen, Kontextmenühandler, Verbimplementierungen) delegieren kann, die mithilfe von Component Object Model (COM) aktiviert werden, sollte COM initialisiert werden, bevor ShellExecuteEx- aufgerufen wird. Für einige Shellerweiterungen ist der COM-Singlethread-Apartmenttyp (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 Shellerweiterungstypen verwendet, und diese Instanzen erfordern keine Initialisierung von COM. Dennoch empfiehlt es sich, COM immer zu initialisieren, bevor sie diese Funktion verwenden.

Wenn DLLs in Ihren Prozess geladen werden, erwerben Sie eine Sperre, die als Ladeprogrammsperrebezeichnet wird. Die DllMain--Funktion wird immer unter der Ladesperre 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 nicht ordnungsgemäß funktioniert, wenn eine Ladeprogrammsperre vorhanden ist, wodurch ein Deadlock und daher ein nicht reagierender Thread riskiert wird.

Wenn Sie mit mehreren Monitoren eine HWND- angeben und das lpVerb- Mitglied der SHELLEXECUTEINFO Struktur festlegen, auf die von lpExecInfo auf "Properties" verwiesen wird, werden alle fenster, die von ShellExecuteEx erstellt wurden, möglicherweise nicht an der richtigen Position angezeigt.

Wenn die Funktion erfolgreich ist, wird das 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- zur Kompatibilität mit 16-Bit-Windows-Anwendungen als HINSTANCE deklariert wird, ist dies kein wahrer HINWEIS. Sie kann nur in eine int umwandeln und nur mit dem Wert 32 oder den SE_ERR_XXX Fehlercodes verglichen werden.

Die SE_ERR_XXX Fehlerwerte werden zur Kompatibilität mit ShellExecutebereitgestellt. 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, kann nicht gefunden werden.
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 Es ist ein Freigabeverstoß aufgetreten.
 

Öffnen von Elementen aus einer URL Sie können Ihre Anwendung registrieren, um sie zu aktivieren, wenn übergebene 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 Sitechainzeiger auf die ShellExecuteEx--Funktion bereitstellen, um die Elementaktivierung mit Diensten von dieser Website zu unterstützen. Weitere Informationen finden Sie unter Starten von Anwendungen (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO).

Anmerkung

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

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- shellapi.h
Library Shell32.lib
DLL- Shell32.dll (Version 3.51 oder höher)

Siehe auch

CoInitializeEx-

IShellExecuteHook-

Starten von Anwendungen (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute-