| |
| |
Preface | |
| |
| |
| |
Introducing Subclassing and Hooking | |
| |
| |
| |
Introduction | |
| |
| |
Subclassing | |
| |
| |
The Window Hooking Mechanism | |
| |
| |
Tools to Aid Us in Our Efforts | |
| |
| |
A Word of Warning | |
| |
| |
| |
Windows System-Specific Information | |
| |
| |
Inside a Windows Application | |
| |
| |
Inside the Windows Messaging System | |
| |
| |
Performance Considerations | |
| |
| |
| |
The Basics of Subclassing and Hooks | |
| |
| |
What Is Subclassing? | |
| |
| |
What Are Hooks? | |
| |
| |
| |
Subclassing and Superclassing | |
| |
| |
| |
Subclassing | |
| |
| |
The AddressOf Operator | |
| |
| |
Some Subclassing Tips | |
| |
| |
Instance Subclassing: An Example | |
| |
| |
Global Subclassing | |
| |
| |
Summary of Key Points in Subclassing | |
| |
| |
| |
Subclassing the Windows Common Dialog Boxes | |
| |
| |
How Common Dialog Box Subclassing Works | |
| |
| |
Using the Resource | |
| |
| |
Creating the Subclassing Application | |
| |
| |
Subclassing Common Dialog Boxes Other Than Open and Save As | |
| |
| |
Problems Subclassing the Find and Replace Common Dialogs | |
| |
| |
| |
ActiveX Controls and Subclassing | |
| |
| |
Subclassing a Third-Party ActiveX Control | |
| |
| |
Subclassing an ActiveX Control Created in VB | |
| |
| |
Subclassing a UserControl from Within a VB-Created ActiveX Control | |
| |
| |
Creating an ActiveX Control That Subclasses Other Windows | |
| |
| |
| |
Superclassing | |
| |
| |
What Is Superclassing? | |
| |
| |
How the Superclassing Example Works | |
| |
| |
Peering into the Superclassing Application with Spy++ | |
| |
| |
| |
Debugging Techniques for Subclassing | |
| |
| |
Where to Start | |
| |
| |
Microsoft Tools | |
| |
| |
NuMega's SmartCheck | |
| |
| |
| |
Hooking | |
| |
| |
| |
WH_CALLWNDPROC | |
| |
| |
How WH_CALLWNDPROC Works | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_CALLWNDPROCRET | |
| |
| |
How WH_CALLWNDPROCRET Works | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_GETMESSAGE | |
| |
| |
How WH_GETMESSAGE Works | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_KEYBOARD and WH_KEYBOARD_LL | |
| |
| |
How Keyboard Messaging Operates | |
| |
| |
Description of Hooks | |
| |
| |
A Thread-Specific Example | |
| |
| |
A System-Wide Example | |
| |
| |
A Low-Level Hook Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_MOUSE and WH_MOUSE_LL | |
| |
| |
How Mouse Messaging Operates | |
| |
| |
Description of Hooks | |
| |
| |
Location of This Hook in the System | |
| |
| |
A Single-Thread Example | |
| |
| |
A System-Wide Hook Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_FOREGROUNDIDLE | |
| |
| |
Description | |
| |
| |
Location of This Hook in the System | |
| |
| |
Background Processing Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_MSGFILTER | |
| |
| |
Description | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_SYSMSGFILTER | |
| |
| |
Description | |
| |
| |
A System-Wide Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_SHELL | |
| |
| |
Description | |
| |
| |
Location of This Hook in the System | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_CBT | |
| |
| |
Description | |
| |
| |
A Thread-Specific Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_JOURNALRECORD | |
| |
| |
Description | |
| |
| |
The Macro Recorder Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_JOURNALPLAYBACK | |
| |
| |
Description | |
| |
| |
The Macro Recorder/Playback Example | |
| |
| |
Caveats | |
| |
| |
| |
WH_DEBUG | |
| |
| |
Description | |
| |
| |
A Thread-Specific Example | |
| |
| |
Some WH_DEBUG Scenarios | |
| |
| |
Caveats | |
| |
| |
| |
The .NET Platform | |
| |
| |
| |
Subclassing .NET WinForms | |
| |
| |
What Is a WinForm? | |
| |
| |
Instance Subclassing | |
| |
| |
Subclassing a Control | |
| |
| |
Superclassing | |
| |
| |
Superclassing a Control | |
| |
| |
Intercepting Keystrokes in a WinForm | |
| |
| |
Behind the Scenes with Spy++ | |
| |
| |
| |
Implementing Hooks in VB.NET | |
| |
| |
Hooks and VB.NET | |
| |
| |
Delegates | |
| |
| |
Implementing the WH_KEYBOARD Hook | |
| |
| |
Implementing the WH_MOUSE Hook | |
| |
| |
| |
Appendixes | |
| |
| |
| |
Messages | |
| |
| |
| |
API Functions | |
| |
| |
| |
Structures and Constants | |
| |
| |
Index | |