Cómo ejecutar una aplicación des de la nuestra

5996 vistas

Para ejecutar una aplicación exterior a nuestro programa es suficiente la utilización de la siguiente función de la API:



delphi
  1. function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
  2.                       Directory: PChar; ShowCmd: Integer): HINST; stdcall;



hWnd: es el Handle de la ventana que servirá de padre para los mensajes de la aplicación. En la mayorÃa de ocasiones será suficiente un 0
Operation: tipo de operación efectuada sobre el fichero. Puede tomar los siguientes valores:
'OPEN' abrir un documento o ejecutar una aplicación
'PRINT' para imprimir un documento
'EXPLORE' para usar el Explorador de Windows usando la ruta dada en FileName
'FIND' para llamar a la ventana de búsqueda usando la ruta dada en FileName
FileName: Nombre de la aplicación a lanzar, del documento a abrir/imprimir, de la carpeta a explorar, ...
Parameters Lista de parámetros en el caso de que FileName sea una aplicación. Si no tenemos parámetros, tendremos que pasarle Nil
Directory carpeta usada por defecto en el caso de que FileName sea una aplicación. En caso contrario (o si no se usa) pasar Nil
ShowCMD Describe cómo abrir la nueva ventana. Ver la ayuda en linea para más información.

Algunos ejemplos de utilización:
Lanzar simplemente una aplicación


delphi
  1. ShellExecute(0,'OPEN','Wordpad.exe', Nil, Nil, SW_SHOW);



Lanzar una aplicación con parámetros


delphi
  1. ShellExecute(0,'OPEN','Wordpad.exe','C:\temp\prueba.txt',Nil, SW_SHOW);



Ejecutar el Explorador de Windows en una determinada carpeta


delphi
  1. ShellExecute(0,'EXPLORE','C:\MiCarpeta\', Nil, Nil, SW_SHOW);



Abrir un documento


delphi
  1. ShellExecute(0,'OPEN','C:\Temp\MiFichero.txt', Nil, Nil, SW_SHOW);



Imprimir un documento


delphi
  1. ShellExecute(0,'PRINT','C:\Temp\MiFichero.doc', Nil, Nil, SW_SHOW);



Mostrar la ventana de búsqueda de Windows


delphi
  1. ShellExecute(Application.handle, 'find', 'c:\temp', Nil, Nil, SW_SHOWNORMAL);



Ejecutar un programa de consola usando redirecciones


delphi
  1. ShellExecute(0, nil, 'CMD', PChar('/C Net View > Resultado.txt'), nil, 0);




Nota: para compilar la función explicada es necesario añadir ShellApi en la cláusula Uses de la unidad que la contenga. Por ejemplo:



delphi
  1. uses  [...], ShellApi;



Atención: la función WinExec no deberÃa de usarse, sólo se conserva para compatibilidad