A Thread-Specific Example

The example application presented here is similar to previous examples. The application provides one button for installing the WH_MSGFILTER hook and one for uninstalling the hook. After you install the hook, messages that the WH_MSGFILTER hook intercepts are displayed, along with the members of the MSG structure for each message, as Figure 15-8 shows.

Screenshot of the WH_MSGFILTER application

Figure 15-8. Screenshot of the WH_MSGFILTER application

Table 15-1 presents the nondefault properties of the form and its controls.

Three items are present in the sample application to test this hook. The first is a menu that contains a single menu item. When the hook is installed and this menu is used, the hook will intercept messages related to actions performed on the menu and display them in the text box provided. Menu messages to the filter function with a code of MSGF_MENU. As a note, you can right-click the text box or the window title bar to produce a pop-up menu. The hook also will intercept messages related to these types of menus.

The second item is a button that displays a message box. When the message box is displayed, the WH_MSGFILTER hook will intercept messages related to the message box. Message box messages are sent to the filter function with a code of MSGF_DIALOGBOX. When the user clicks the OK button, the hook ceases to intercept messages for the message box.

Table 15-1. Nondefault Properties ...

Get Subclassing and Hooking with Visual Basic now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.