

Delphi. Программно закрыть MessageBox, открытый в таймере.
MessageBox(0, 'Сообщение', 'Информация',
MB_ICONINFORMATION + MB_OK + MB_SETFOREGROUND + MB_SYSTEMMODAL);
Там есть кнопка, но как закрыть программно, можно даже сэмулировать нажатие на кнопку.
var
PID: DWORD;
begin
GetWindowThreadProcessId(FindWindow('#32770', 'Информация'), @PID);
if PID = GetCurrentProcessId then
SendMessage(FindWindow('#32770', 'Информация'), WM_CLOSE, 0, 0);
Если тебе нужен именно мессаджбокс - то практически никак. Только создавать цепочку, которая пошлет этому мессадж боксу команду закрыть.
Зато если создать простенькую форму, выглядящую как мессаджбокс, то в ней как раз и можно делать что угодно.
Отправить в кнопку сообщение нажатия через winapi postmessage, если хотите сэмулировать нажатие.
MessageBox(Application.Handle, 'Вы действительно хотите удалить пользователя?', 'Запрос', MB_ICONQUESTION or MB_YESNO);
var
WH: HWND;
begin
WH := GetWindow(Application.Handle, GW_ENABLEPOPUP);
if WH <> 0 then
begin
EndDialog(WH, IDNO);
end;
end;