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 veces 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 acerca de enviar un correo electrónico directamente desde su aplicación Delphi a través del programa de cliente de correo electrónico predeterminado de Windows?
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.
usa ShellApi;
...
ShellExecute (Manija, 'abierto',
'c: \ Windows \ notepad.exe', nil, nil, SW_SHOWNORMAL);
ShellExecute (Manija, 'abierto',
'c: \ windows \ notepad.exe',
'c: \ SomeText.txt', nil, SW_SHOWNORMAL);
ShellExecute (Manija, 'abierto',
'c: \ DelphiDownload', nil, nil, SW_SHOWNORMAL);
ShellExecute (Manija, 'abierto',
'c: \ MyDocuments \ Letter.doc', nil, nil, SW_SHOWNORMAL);
Aquí le mostramos cómo encontrar una aplicación asociada con una extensión.
ShellExecute (Manija, 'abierto',
'http: //delphi.about.com',nil,nil, SW_SHOWNORMAL);
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);
final;
Aquí se explica cómo enviar un correo electrónico con el archivo adjunto.
El siguiente ejemplo usa la función API ShellExecuteEx.
// Ejecuta la calculadora de Windows y aparece
// un mensaje cuando termina el 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;
final;
si ShellExecuteEx (@SEInfo) comienza entonces
repetir
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
hasta (ExitCode STILL_ACTIVE) o
Aplicación Terminada;
ShowMessage ('Calculadora terminada');
final
else ShowMessage ('¡Error al iniciar Calc!');
final;