This procedure will let your programs process Windows messages. The only thing is that this function may stop only this procedure while not stopping the rest
var
dtNow: TDateTime;
begin
{ Before pause }
dtNow := Now;
repeat
Application.ProcessMessages; { Process Windows messages }
until dtNow + [...]
Merlin’s Delphi Forge