Función ShellExecuteExW (shellapi.h)

Realiza una operación en un archivo especificado.

Sintaxis

BOOL ShellExecuteExW(
  [in, out] SHELLEXECUTEINFOW *pExecInfo
);

Parámetros

[in, out] pExecInfo

Tipo: SHELLEXECUTEINFO*

Puntero a una estructura SHELLEXECUTEINFO que contiene y recibe información sobre la aplicación que se está ejecutando.

Valor devuelto

Tipo: BOOL

Devuelve TRUE si se ejecuta correctamente; de lo contrario, FALSE. Llame a GetLastError para obtener información de error extendida.

Comentarios

Dado que ShellExecuteEx puede delegar la ejecución en extensiones de Shell (orígenes de datos, controladores de menú contextual, implementaciones de verbo) que se activan mediante el modelo de objetos componentes (COM), se debe inicializar COM antes de llamar a ShellExecuteEx . Algunas extensiones de Shell requieren el tipo de apartamento de un solo subproceso (STA) COM. En ese caso, COM debe inicializarse como se muestra aquí:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Hay instancias en las que ShellExecuteEx no usa uno de estos tipos de extensión de Shell y esas instancias no requerirían que COM se inicialice en absoluto. No obstante, es recomendable inicializar siempre COM antes de usar esta función.

Cuando los archivos DLL se cargan en el proceso, se adquiere un bloqueo conocido como bloqueo del cargador. La función DllMain siempre se ejecuta bajo el bloqueo del cargador. Es importante que no llame a ShellExecuteEx mientras mantiene un bloqueo del cargador. Dado que ShellExecuteEx es extensible, puede cargar código que no funcione correctamente en presencia de un bloqueo del cargador, arriesgando un interbloqueo y, por tanto, un subproceso que no responde.

Con varios monitores, si especifica un HWND y establece el miembro lpVerb de la estructura SHELLEXECUTEINFO a la que apunta lpExecInfo en "Properties", es posible que las ventanas creadas por ShellExecuteEx no aparezcan en la posición correcta.

Si la función se ejecuta correctamente, establece el miembro hInstApp de la estructura SHELLEXECUTEINFO en un valor mayor que 32. Si se produce un error en la función, hInstApp se establece en el valor de error SE_ERR_XXX que mejor indica la causa del error. Aunque hInstApp se declara como HINSTANCE por compatibilidad con aplicaciones windows de 16 bits, no es un verdadero HINSTANCE. Solo se puede convertir en un valor int y solo se puede comparar con el valor 32 o con los códigos de error SE_ERR_XXX.

Los valores de error SE_ERR_XXX se proporcionan por compatibilidad con ShellExecute. Para recuperar información de error más precisa, use GetLastError. Puede devolver uno de los valores siguientes.

Error Descripción
ERROR_FILE_NOT_FOUND No se encontró el archivo especificado.
ERROR_PATH_NOT_FOUND No se encontró la ruta de acceso especificada.
ERROR_DDE_FAIL Error en la transacción de Intercambio dinámico de datos (DDE).
ERROR_NO_ASSOCIATION No hay ninguna aplicación asociada a la extensión de nombre de archivo especificada.
ERROR_ACCESS_DENIED Se deniega el acceso al archivo especificado.
ERROR_DLL_NOT_FOUND No se encuentra uno de los archivos de biblioteca necesarios para ejecutar la aplicación.
ERROR_CANCELLED La función solicitó al usuario información adicional, pero el usuario canceló la solicitud.
ERROR_NOT_ENOUGH_MEMORY No hay suficiente memoria para realizar la acción especificada.
ERROR_SHARING_VIOLATION Se ha producido una infracción de uso compartido.
 

Apertura de elementos desde una dirección URL Puede registrar la aplicación para que se active cuando se pasen direcciones URL. También puede especificar qué protocolos admite la aplicación. Consulta Registro de aplicaciones para obtener más información.

Compatibilidad con la cadena de sitios A partir de Windows 8, puede proporcionar un puntero de cadena de sitio a la función ShellExecuteEx para admitir la activación de elementos con servicios de ese sitio. Vea Iniciar aplicaciones (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO) para obtener más información.

Nota

El encabezado shellapi.h define ShellExecuteEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shellapi.h
Library Shell32.lib
Archivo DLL Shell32.dll (versión 3.51 o posterior)

Consulte también

CoInitializeEx

IShellExecuteHook

Iniciar aplicaciones (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute