Cita:
Empezado por jonydread
solo quisiera saber si se ejecuto shellexecute
|
Eso exáctamente hace el código que te puse anteriormente. Guarda en la variable HINSTANCE el resultado de la acción de
ShellExecute y si hubo un error (el resultado es menor que 32) lo muestra.
Lo único que habría que hacer es agregarlo:
Código Delphi
[-]
var
HINSTANCE: Integer;
ErrorMSG: string;
begin
if ParamStr(1) > '' then
begin
OpenDialog1.FileName:= ParamStr(1);
edit1.Text:=ParamStr(1);
if ParamStr(1) > '' then
begin
if ExtractFileExt(ParamStr(1)) = '.reg' then
begin
HINSTANCE:= ShellExecute(Handle, 'open', 'C:\HAND.CMD', PChar(GetShortName(FileName)), nil, SW_NORMAL);
if HINSTANCE < 32 then
begin
case HINSTANCE of
0: ErrorMSG:= 'Memoria o recursos insuficientes';
ERROR_FILE_NOT_FOUND: ErrorMSG:= 'Archivo no encontrado';
ERROR_PATH_NOT_FOUND: ErrorMSG:= 'Ruta no encontrada';
SE_ERR_ACCESSDENIED: ErrorMSGr:= 'Acceso denegado';
end;
MessageDlg('Error: '+ErrorMSG, mtError, [mbOK],0);
Application.Terminate;
end
...
Pero no le encuentro sentido a estas líneas:
Código Delphi
[-]
if MessageDlg('Archivo invalido!', MtInformation, [mbOK],0) = mrok then
Application.Terminate;
El usuario recibe el mensaje 'Archivo inválido', no tiene otra opción que aceptar con el botón OK y luego de eso se termina la aplicación. Es decir no tiene sentido evaluar una condición de la que ya sabemos la respuesta...
O directamente hacemos:
Código Delphi
[-]
MessageDlg('Archivo invalido!', mtError, [mbOK],0);
Application.Terminate;
O si queremos la opinión del usuario:
Código Delphi
[-]
if MessageDlg('¿ Desea finalizar ?', mtConfirmation, [mbYes,mbNo],0) = mrYes then
Application.Terminate;
Un saludo.