Funzione ShellExecuteExA (shellapi.h)

Esegue un'operazione su un file specificato.

Sintassi

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

Parametri

[in, out] pExecInfo

Tipo: SHELLEXECUTEINFO*

Puntatore a una struttura SHELLEXECUTEINFO che contiene e riceve informazioni sull'applicazione in esecuzione.

Valore restituito

Tipo: BOOL

Restituisce TRUE se l'operazione riesce; in caso contrario, FALSE. Chiamare GetLastError per informazioni sugli errori estese.

Commenti

Poiché ShellExecuteEx può delegare l'esecuzione alle estensioni shell (origini dati, gestori di menu di scelta rapida, implementazioni verbo) attivate tramite Component Object Model (COM), COM deve essere inizializzato prima di chiamare ShellExecuteEx . Alcune estensioni shell richiedono il tipo di apartment a thread singolo (STA) COM. In tal caso, COM deve essere inizializzato come illustrato di seguito:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Esistono istanze in cui ShellExecuteEx non usa uno di questi tipi di estensione shell e tali istanze non richiedono l'inizializzazione di COM. Tuttavia, è consigliabile inizializzare sempre COM prima di usare questa funzione.

Quando le DLL vengono caricate nel processo, si acquisisce un blocco noto come blocco del caricatore. La funzione DllMain viene sempre eseguita nel blocco del caricatore. È importante non chiamare ShellExecuteEx mentre si mantiene un blocco del caricatore. Poiché ShellExecuteEx è estendibile, è possibile caricare codice che non funziona correttamente in presenza di un blocco del caricatore, rischiando un deadlock e quindi un thread non risponde.

Con più monitor, se si specifica un HWND e si imposta il membro lpVerb della struttura SHELLEXECUTEINFO a cui punta lpExecInfo su "Properties", qualsiasi finestra creata da ShellExecuteEx potrebbe non essere visualizzata nella posizione corretta.

Se la funzione ha esito positivo, imposta il membro hInstApp della struttura SHELLEXECUTEINFO su un valore maggiore di 32. Se la funzione ha esito negativo, hInstApp viene impostato sul valore di errore SE_ERR_XXX che indica meglio la causa dell'errore. Anche se hInstApp viene dichiarato come HINSTANCE per la compatibilità con le applicazioni Windows a 16 bit, non è una vera HINSTANCE. Può essere eseguito il cast solo a un valore int e può essere confrontato solo con il valore 32 o il SE_ERR_XXX codici di errore.

I valori di errore SE_ERR_XXX vengono forniti per la compatibilità con ShellExecute. Per recuperare informazioni più accurate sull'errore, usare GetLastError. Può restituire uno dei valori seguenti.

Errore Descrizione
ERROR_FILE_NOT_FOUND Impossibile trovare il file specificato.
ERROR_PATH_NOT_FOUND Il percorso specificato non è stato trovato.
ERROR_DDE_FAIL La transazione DDE (Dynamic Data Exchange) non è riuscita.
ERROR_NO_ASSOCIATION Nessuna applicazione associata all'estensione del nome file specificata.
ERROR_ACCESS_DENIED L'accesso al file specificato viene negato.
ERROR_DLL_NOT_FOUND Non è possibile trovare uno dei file di libreria necessari per eseguire l'applicazione.
ERROR_CANCELLED La funzione ha richiesto all'utente informazioni aggiuntive, ma l'utente ha annullato la richiesta.
ERROR_NOT_ENOUGH_MEMORY Memoria insufficiente per eseguire l'azione specificata.
ERROR_SHARING_VIOLATION Si è verificata una violazione di condivisione.
 

Apertura di elementi da un URL È possibile registrare l'applicazione per l'attivazione quando vengono passati gli URL. È anche possibile specificare i protocolli supportati dall'applicazione. Per altre informazioni, vedi Registrazione dell'applicazione .

Supporto della catena di siti A partire da Windows 8, è possibile fornire un puntatore della catena di siti alla funzione ShellExecuteEx per supportare l'attivazione degli elementi con i servizi di tale sito. Per altre informazioni, vedere Avvio di applicazioni (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO).

Nota

L'intestazione shellapi.h definisce ShellExecuteEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shellapi.h
Libreria Shell32.lib
DLL Shell32.dll (versione 3.51 o successiva)

Vedi anche

CoInitializeEx

IShellExecuteHook

Avvio di applicazioni (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute