Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7616857
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T02:59:37+00:00 2026-05-31T02:59:37+00:00

Is there any event I could use so I’d catch the moment when ShowMessage

  • 0

Is there any event I could use so I’d catch the moment when ShowMessage appears on the screen? I’d also need pass a reference to the TForm which has shown the Message.

So far I tried OnDeactivate, but it seems, ShowMessage is not causing it…

In.NET there is methon on Application that catches every MessageBox (Application.AddFilterMessage or smth like this), I’d need something like this in delphi

What I’m trying to achive is:
I must catch the moment while a dialog window appears (or just a modal window, but it’s not that comfortable). I need to do couple of instructions then. Goal of those instructions is to give me a refference to the just recieved DialogWindow so I could for example get a number of buttons that lies on it.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T02:59:39+00:00Added an answer on May 31, 2026 at 2:59 am

    In modern Delphi versions, on modern Windows versions, ShowMessage results in a Windows dialog window. You can use a WH_CBT hook to catch the activation of that dialog window.

    function CBTProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    var
      wnd: HWND;
      ClassName: string;
    begin
      if nCode=HCBT_ACTIVATE then
      begin
        wnd := wParam;
        SetLength(ClassName, 256);
        SetLength(ClassName, GetClassName(wnd, PChar(ClassName), Length(ClassName)));
        if (ClassName='#32770') or (ClassName='TMessageForm') then
          Beep;
      end;
      Result := CallNextHookEx(0, nCode, wParam, lParam);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Hook: HHOOK;
    begin
      Hook := SetWindowsHookEx(WH_CBT, CBTProc, HInstance, GetCurrentThreadId);
      if Hook=0 then
        RaiseLastOSError;
      try
        ShowMessage('hello');
      finally
        if not UnhookWindowsHookEx(Hook) then
          RaiseLastOSError;
      end;
    end;
    

    Note that the actual window class name varies from system to system. On XP the class name will be TMessageForm because the dialog is actually a Delphi TForm. However, on Vista and later the dialog is a standard window message box dialog with window class name #32770.

    I’ve shown this wrapped around a single call to ShowMessage, but you could install this at startup if you want to hook all message dialogs shown in your app.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there any way I could catch any uncaught exception in javascript? I mean,
Is there any event that I could set a filter to pick up using
Is there any event like OnValidate in LINQ where I can add my business
Hy, is there any event-drive/event-based Webframework for Python? I mean something like NitroGen is
Is there any way to access the Windows Event Log from a java class.
is there any javascript library that provides me with a custom event as soon
Is there any way to make the program sleep until an event occurs, but
Is there any difference between document.onclick and window.onclick event?
Are there any prebuilt modules for this? Is there an event thats called everytime
I have a class with an event: public event MyEventHandler MyEvent; Is there any

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.