Compartir a través de


Función ShellExecuteExA (shellapi.h)

Realiza una operación en un archivo especificado.

Sintaxis

BOOL ShellExecuteExA(
  [in, out] SHELLEXECUTEINFOA *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 ejecuta.

Valor devuelto

Tipo: BOOL de

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

Observaciones

Dado que ShellExex 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 ShellExex. Algunas extensiones de Shell requieren el tipo de apartamento de un solo subproceso COM (STA). En ese caso, COM debe inicializarse como se muestra aquí:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

Hay instancias en las que ShellExex 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, adquiere un bloqueo conocido como bloqueo bloqueo del cargador. La función dllMain de siempre se ejecuta bajo el bloqueo del cargador. Es importante que no llame a ShellExex mientras mantiene un bloqueo del cargador. Dado que ShellExex 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 lpVerb miembro del SHELLEXECUTEINFO que apunta lpExecInfo en "Propiedades", es posible que las ventanas creadas por ShellExecuteEx no aparezcan en la posición correcta.

Si la función se ejecuta correctamente, establece el hInstApp miembro del 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 a un int y solo se puede comparar con el valor 32 o los códigos de error SE_ERR_XXX.

Los valores de error de 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 siguientes valores.

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.
 

Abrir 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 de registro de aplicaciones para obtener más información.

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

Nota

El encabezado shellapi.h define ShellEx 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de shellapi.h
biblioteca de Shell32.lib
DLL de Shell32.dll (versión 3.51 o posterior)

Consulte también

CoInitializeEx

de IShellExecuteHook

iniciar aplicaciones (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)

ShellExecute