描述
WinHLLAPI 实现具有缺省阻塞过程,在过程仅包含一个消息处理程序。以下示例显示了此缺省机制:
BOOL DefaultBlockingHook
{
MSG msg;
if (PeekMessage (&msg, NULL, 0, 0, xfPM_NOREMOVE))
{
if(msg.message = = WM_QUIT)
{
return FALSE;
}
PeekMessage (&msg, NULL, 0, 0, PM_REMOVE);
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return TRUE;
}阻塞挂钩是在每个线程的基础上实现的。此函数设置的阻塞挂钩将对线程保持有效,直到它被另一个 WinHLLAPISetBlockingHook() 调用替换,或者直到调用 WinHLLAPIUnhookBlockingHook() 恢复缺省值为止。
如果阻塞函数收到 WM_QUIT 消息,则必须返回 FALSE,以便 WinHLLAPI 可以将控制权返回给应用程序,以处理消息并正常终止。否则,函数应返回 TRUE。