Saludos a todos.
Tengo desarrollada una aplicación la cual ejecuta con un timer un fichero de lote (.bat), el problema en si es que si cierro la aplicación no me da error, pero al cerrar Windows y la aplicación de esta ejecutando me devuelve un error que indica que cmd.exe no se ha ejecutado correctamente y pulse aceptar para cerrarlo, si modifico el intervalo del timer de 1000 a 5000 puede que no aparezca el error o en otros casos si aparece en el caso de que este en 1000 siempre se muestra el error.
agradezco de antemano su ayuda
a continuación agrego el código de la Unit
Código Delphi
[-]unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, AppEvnts; type TForm1 = class(TForm) Timer1: TTimer; ApplicationEvents1: TApplicationEvents; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION; public { Public declarations } end; var Form1: TForm1; app, cmd: Integer; implementation {$R *.dfm} procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession); begin try app:= 1; Msg.result := 1; finally halt; end; end; procedure TForm1.FormCreate(Sender: TObject); begin app:=0; cmd:=FindWindow(nil,'C:\WINDOWS\system32\cmd.exe'); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if app = 0 then begin if cmd = 0 then WinExec(PChar('clean.bat'),SW_HIDE); end else begin app:= 1; end; end; procedure TForm1.FormPaint(Sender: TObject); begin Form1.Hide; end; end.