La función shellExecute() en C++

Naila Saad Siddiqui 12 octubre 2023
  1. la función ShellExecute() en C++
  2. Ventajas de usar la función ShellExecute()
  3. Desventajas de usar la función ShellExecute()
La función shellExecute() en C++

Este pequeño tutorial de programación discutirá la función de biblioteca ShellExecute() en C++. Esta función de biblioteca se usa principalmente para abrir o ejecutar cualquier archivo (por ejemplo, archivos de script) a través de un programa C++.

la función ShellExecute() en C++

ShellExecute() es una función de biblioteca proporcionada en la biblioteca estándar de C++ y se usa para abrir o ejecutar cualquier archivo ejecutable desde el programa C++. No necesita cuidar el programa en el que se abrirá el archivo requerido; solo necesita dar la ruta o el nombre del archivo que necesita abrir.

Es similar a la acción de Windows de hacer clic en un icono con el mouse y se abre. Esto se usa para automatizar esta acción usando programación C++.

Una de las principales razones por las que ShellExecute() es tan popular es que casi cualquier cosa se puede ejecutar con esta llamada a la API.

Si el archivo proporcionado no es ejecutable, la API ShellExecute buscará en el registro un programa apropiado para iniciar el archivo dado. Por ejemplo, si proporciona un nombre de archivo con la extensión .txt, es probable que se inicie el Bloc de notas con el archivo cargado.

La firma de la función es:

HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile,
                       LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);

Veamos los detalles de los parámetros:

  • hwnd: Es un identificador para guardar la referencia a la ventana principal
  • lpOperation: Es el nombre de la acción que se debe realizar sobre el archivo. La siguiente es la lista de acciones que se pueden utilizar:
    • open o NULL - La función abre el archivo lpFile. El archivo puede ser un archivo de documento o un archivo ejecutable. También podemos especificar un nombre de carpeta para abrir.
    • print - Si el archivo especificado por lpFile es un archivo de documento, la función lo envía a la impresora para su impresión.
    • explorar - Si el archivo especificado por lpFile es el nombre de la carpeta, la función explora esa carpeta.
  • lpFile: Este es el nombre de un archivo, carpeta o archivo ejecutable.
  • lpParameters: se utiliza para proporcionar cualquier parámetro de línea de comandos adicional.
  • lpDirectory: Se utiliza para especificar la ruta del directorio predeterminado.
  • nShowCmd Indica cómo abrir el archivo especificado en la función. Su valor puede ser cualquiera de los siguientes:
    • SW_HIDE - Muestra la nueva ventana de la aplicación después de ocultar la actual.
    • W_MAXIMIZE - Muestra la ventana especificada en forma maximizada.
    • SW_MINIMIZE - Muestra la ventana especificada en forma minimizada y muestra la ventana del siguiente nivel.
    • SW_SHOW - Activa la ventana especificada en su tamaño y posición por defecto
    • SW_SHOWMAXIMIZED - Primero activa la ventana y la muestra en forma maximizada.
    • SW_SHOWMINIMIZED - Primero activa la ventana y la muestra de forma minimizada.
    • SW_SHOWNORMAL - habilita y muestra una ventana. Windows devuelve la ventana a su tamaño y ubicación originales si está minimizada o maximizada. Cuando se muestra una ventana por primera vez, una aplicación debe proporcionar este indicador.
    • Si lpFile es un archivo de documento especificado, entonces el valor de nShowCmd debe establecerse en 0.

En caso de éxito, ShellExecute() devuelve un valor superior a 31; de lo contrario, su valor de retorno puede ser:

  • 0: Si el sistema operativo no proporciona memoria ni recursos.
  • ERROR_FILE_NOT_FOUND – El archivo especificado no se encuentra en la ubicación.
  • ERROR_PATH_NOT_FOUND – La ruta especificada es incorrecta o no se encuentra.
  • ERROR_BAD_FORMAT – Se proporcionó un archivo .exe no válido.

También puede haber muchos otros códigos de error, pero hemos discutido algunos errores comunes.

Veamos el ejemplo de codificación de la función ShellExecute():

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;

int main() {
  ShellExecute(NULL, "open", "MyTextFile.txt", NULL, NULL, SW_SHOWMAXIMIZED);
  return 0;
}

Después de ejecutar el código, se abrirá MyTextFile en el programa Notepad. Del mismo modo, también podemos proporcionar una URL que se abrirá en el navegador de esta manera:

#include <bits/stdc++.h>
#include <windows.h>
using namespace std;

int main() {
  char webUrl[100] = "www.google.com";
  ShellExecute(NULL, "open", webUrl, NULL, NULL, SW_SHOWNORMAL);
  return 0;
}

Hay muchas ventajas y desventajas de usar la función ShellExecute(), que son:

Ventajas de usar la función ShellExecute()

Esta llamada API puede abrir, imprimir o buscar archivos o carpetas utilizando la configuración estándar de Windows. También podrá cambiar esos valores predeterminados.

No se deben completar todos los parámetros; varios de ellos pueden ser NULL (es decir, facilidad de uso).

Desventajas de usar la función ShellExecute()

El software de 16 bits no se puede ejecutar a través de ShellExecute. Comparable a WinExec en complejidad.

No puede indicar cuándo se ha completado el programa generado.

Artículo relacionado - C++ Function