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
Iniciar aplicaciones (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)