Top.Mail.Ru
Ответы
Аватар пользователя
9лет
Изменено
Аватар пользователя
Аватар пользователя
Программирование
+1

Delphi. Программно закрыть MessageBox, открытый в таймере.

MessageBox(0, 'Сообщение', 'Информация',
MB_ICONINFORMATION + MB_OK + MB_SETFOREGROUND + MB_SYSTEMMODAL);

Там есть кнопка, но как закрыть программно, можно даже сэмулировать нажатие на кнопку.

По дате
По рейтингу
Аватар пользователя
Новичок
9лет

var
PID: DWORD;
begin
GetWindowThreadProcessId(FindWindow('#32770', 'Информация'), @PID);
if PID = GetCurrentProcessId then
SendMessage(FindWindow('#32770', 'Информация'), WM_CLOSE, 0, 0);

Аватар пользователя
Мастер
9лет

Если тебе нужен именно мессаджбокс - то практически никак. Только создавать цепочку, которая пошлет этому мессадж боксу команду закрыть.
Зато если создать простенькую форму, выглядящую как мессаджбокс, то в ней как раз и можно делать что угодно.

Аватар пользователя
Искусственный Интеллект
9лет

Отправить в кнопку сообщение нажатия через winapi postmessage, если хотите сэмулировать нажатие.

Аватар пользователя
7лет

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;