Mega Code Archive

 
Categories / Delphi / Examples
 

How can i close a messagebox[]

You can use a thread to achieve that: unit MsgThread; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, ExtCtrls; type TMboxThread = class(TThread) private { private declarations } protected procedure Execute; override; public constructor Create; end; type TFrmMsgThread = class(TForm) BtnClose: TButton; Edit1: TEdit; Edit2: TEdit; Timer1: TTimer; procedure BtnCloseClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private FFirst: boolean; FMboxThread: TMBoxThread; FWinHandle: HWnd; public { public declarations } end; var FrmMsgThread: TFrmMsgThread; implementation {$R *.DFM} { TMboxThread } constructor TMboxThread.Create; begin FreeOnTerminate := True; inherited Create(False); end; procedure TMboxThread.Execute; begin { Place thread code here } MessageBox(Application.Handle, 'Text', 'Caption', MB_APPLMODAL + MB_SETFOREGROUND); end; { TForm1 } procedure TFrmMsgThread.BtnCloseClick(Sender: TObject); begin FMBoxThread := TMBoxThread.Create; FFirst := true; Timer1.Enabled := true; end; procedure TFrmMsgThread.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; if FFirst then begin FWinHandle := GetForegroundWindow; FFirst := false; Timer1.Enabled := true; end else SendMessage(FWinHandle, WM_CLOSE, 0, 0); end; end.