Consejos

Ejecutar y ejecutar aplicaciones y archivos desde el código de Delphi

Ejecutar y ejecutar aplicaciones y archivos desde el código de Delphi

El lenguaje de programación Delphi proporciona una forma rápida de escribir, compilar, empaquetar e implementar aplicaciones multiplataforma. Aunque Delphi crea una interfaz gráfica de usuario, es probable que haya ocasiones en que desee ejecutar un programa desde su código de Delphi. Supongamos que tiene una aplicación de base de datos que utiliza una utilidad de copia de seguridad externa. La utilidad de respaldo toma parámetros de la aplicación y archiva los datos, mientras su programa espera hasta que finalice el respaldo.

Quizás desee abrir documentos presentados en un cuadro de lista de archivos simplemente haciendo doble clic en ellos sin abrir primero el programa asociado. Imagine una etiqueta de enlace en su programa que lleve al usuario a su página de inicio. ¿Qué dice sobre el envío de un correo electrónico directamente desde su aplicación Delphi a través del programa de cliente de correo electrónico predeterminado de Windows?

ShellExecute

Para iniciar una aplicación o ejecutar un archivo en un entorno Win32, use la función ShellExecute Windows API. Consulte la ayuda en ShellExecute para obtener una descripción completa de los parámetros y códigos de error devueltos. Puede abrir cualquier documento sin saber qué programa está asociado con él: el enlace se define en el Registro de Windows.

Aquí hay algunos ejemplos de shell.

Ejecutar Bloc de notas

usa ShellApi;

ShellExecute (Manija, 'abierto',
'c: Windows notepad.exe', nil, nil, SW_SHOWNORMAL);

Abra SomeText.txt con el Bloc de notas

ShellExecute (Manija, 'abierto',
'c: windows notepad.exe',
'c: SomeText.txt', nil, SW_SHOWNORMAL);

Mostrar el contenido de la carpeta "DelphiDownload"

ShellExecute (Manija, 'abierto',
'c: DelphiDownload', nil, nil, SW_SHOWNORMAL);

Ejecutar un archivo de acuerdo con su extensión

ShellExecute (Manija, 'abierto',
'c: MyDocuments Letter.doc', nil, nil, SW_SHOWNORMAL);

Aquí se explica cómo encontrar una aplicación asociada con una extensión.

Abra un sitio web o un archivo * .htm con el Explorador web predeterminado

ShellExecute (Manija, 'abierto',
'//delphi.about.com',nil,nil, SW_SHOWNORMAL);

Enviar un correo electrónico con el asunto y el cuerpo del mensaje

var em_subject, em_body, em_mail: string;
empezar
em_subject: = 'Esta es la línea de asunto';
em_body: = 'El texto del cuerpo del mensaje va aquí';
em_mail: = 'mailto: [email protected]? subject =' +
em_subject + '& body =' + em_body;
ShellExecute (Manija, 'abierto',
PChar (em_mail), nil, nil, SW_SHOWNORMAL);
fin;

Aquí se explica cómo enviar un correo electrónico con el archivo adjunto.

Ejecute un programa y espere hasta que termine

El siguiente ejemplo utiliza la función API ShellExecuteEx.

// Ejecuta la calculadora de Windows y aparece
// un mensaje cuando termina Calc.
usa ShellApi;

var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
empezar
ExecuteFile: = 'c: Windows Calc.exe';
FillChar (SEInfo, SizeOf (SEInfo), 0);
SEInfo.cbSize: = SizeOf (TShellExecuteInfo);
con SEInfo comience
fMask: = SEE_MASK_NOCLOSEPROCESS;
Wnd: = Application.Handle;
lpFile: = PChar (ExecuteFile);
{
ParamString puede contener el
Parámetros de aplicación.
}
// lpParameters: = PChar (ParamString);
{
StartInString especifica el
nombre del directorio de trabajo.
Si se omite, se usa el directorio actual.
}
// lpDirectory: = PChar (StartInString);
nShow: = SW_SHOWNORMAL;
fin;
si ShellExecuteEx (@SEInfo) comienza entonces
repetir
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
hasta que (ExitCode STILL_ACTIVE) o
Aplicación Terminada;
ShowMessage ('Calculadora terminada');
fin
else ShowMessage ('¡Error al iniciar Calc!');
fin;