A Thread-Specific Example

The example presented here, which is shown in Figure 11-2, will build on what you learned in Chapter 9 and Chapter 10. By following this example, you will see the differences between the WH_CALLWNDPROC, WH_CALLWNDPROCRET, and WH_GETMESSAGE hooks. This example installs the three hooks. Now, when you click the PostMessage and PostThreadMsg buttons, you will see the WH_GETMESSAGE hook display messages in the text box.

Screenshot of example application

Figure 11-2. Screenshot of example application

Table 11-1 lists the nondefault properties of the form and its controls.

You use this application in the same way you used the sample applications in the previous two chapters. Click the hook button to install all three hooks, and then click each of the lower buttons shown in Figure 11-2 to send and post the WM_NULL message. The text box will indicate which hook intercepted the WM_NULL message, as well as the available parameters for that hook. There is no difference from the previous applications in output displayed when you click the SendMessage type buttons. When you click the PostMessage and PostThreadMsg buttons, the WH_GETMESSAGE hook now displays a line of text indicating that it has intercepted the posted message.

Table 11-1. Nondefault Properties of the Form and Its Controls

Object Type

Property Name

Property Value

Form

Name

Form2

Form

Caption

“WH_GETMESSAGE Hook Test”

Form

Top

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.