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 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
Starten von Anwendungen (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)