A hook list contains the addresses of the functions that the system calls while processing a hook. An application can take advantage of a particular type of hook by defining a hook function and using WinSetHook to enter the address of the function in the corresponding hook list. To specify the hook type in WinSetHook, the application uses one of the following constants:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Constant Name ³Description ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_CHECKMSGFILTER ³Lets applications apply very specific ³ ³ ³message filtering. See HK_CHECKMSGFILTER³ ³ ³- Check Message Filter Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_CODEPAGECHANGED ³Lets applications determine when the ³ ³ ³code page changes. See HK_CODEPAGECHANGE³ ³ ³- Code Page Changed Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_DESTROYWINDOW ³Called whenever a window is destroyed. ³ ³ ³See HK_DESTROYWINDOW - Destroy Window ³ ³ ³Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_FINDWORD ³Lets applications control where ³ ³ ³WinDrawText places line breaks. See ³ ³ ³HK_FINDWORD - Find Word Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_FLUSHBUF ³Lets applications save data before the ³ ³ ³system reboots. See HK_FLUSHBUF - Flush ³ ³ ³Buffer Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_HELP ³Monitors the WM_HELP message. See ³ ³ ³HK_HELP - Help Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_INPUT ³Monitors messages in the specified ³ ³ ³message queue. See HK_INPUT - Input Hook³ ³ ³. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_JOURNALPLAYBACK ³Lets applications insert messages into ³ ³ ³the system message queue. See ³ ³ ³HK_JOURNALPLAYBACK - Journal Playback ³ ³ ³Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_JOURNALRECORD ³Lets applications record mouse and ³ ³ ³keyboard input messages. See ³ ³ ³HK_JOURNALRECORD - Journal Record Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_LOADER ³Lets the library and procedure loading ³ ³ ³and deleting calls be intercepted. See ³ ³ ³HK_LOADER - Loader Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_LOCKUP ³Called when the system locks itself up. ³ ³ ³See HK_LOCKUP - Lockup Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_MSGCONTROL ³Monitors the flow of messages to be ³ ³ ³intercepted. See HK_MSGCONTROL - Message³ ³ ³Control Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_MSGFILTER ³Monitors input events during system ³ ³ ³modal loops. See HK_MSGFILTER - Message ³ ³ ³Filter Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_MSGINPUT ³Lets applications simulate user input, ³ ³ ³and only mouse and keyboard messages ³ ³ ³should be passed in. All other messages ³ ³ ³will be discarded. Mouse and keyboard ³ ³ ³messages injected into this hook will ³ ³ ³have the same effect as if they were ³ ³ ³generated by the mouse or keyboard ³ ³ ³device driver. The messages are routed ³ ³ ³in the same manner as normal user input.³ ³ ³See HK_MSGINPUT - Message Input Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_PLIST_ENTRY ³Called every time a program-list call or³ ³ ³initialization file call is invoked by ³ ³ ³an application. It is called before the ³ ³ ³call is run. See HK_PLIST_ENTRY - ³ ³ ³Program List Call Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_PLIST_EXIT ³Called every time a program-list call or³ ³ ³initialization file call is invoked by ³ ³ ³an application. It is called before the³ ³ ³call is run. See HK_PLIST_EXIT - Program³ ³ ³List Exit Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_REGISTERUSERMSG ³Called whenever a user message or data ³ ³ ³type is registered. See ³ ³ ³HK_REGISTERUSERMSG - Register User ³ ³ ³Message Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_SENDMSG ³Monitors messages sent by using ³ ³ ³WinSendMsg. See HK_SENDMSG - Send ³ ³ ³Message Hook. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³HK_WINDOWDC ³Called when a device context is ³ ³ ³allocated or freed. See HK_WINDOWDC - ³ ³ ³Device Context Hook. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
While running a function that contains a hook, the system checks for any function addresses in the hook list that correspond to the type of hook. If an address is found, the system tries to locate and run the function.