WinAPPCSetBlockingHook

WinAPPCSetBlockingHook 函数允许 Windows APPC 实现通过新函数阻止 APPC 函数调用。 默认情况下,在 Microsoft Windows 中,阻止调用会暂停调用应用程序的线程,直到请求完成。

语法

  
    FARPROC WINAPI WinAPPCSetBlockingHook (   
FARPROC lpBlockFunc);  

参数

lpBlockFunc
指定要安装的阻塞函数的过程实例地址。

返回值

返回值指向以前安装的阻塞函数的过程实例。 调用 WinAPPCSetBlockingHook 的应用程序或库应保存此返回值,以便在需要时可以还原它。 (如果嵌套不重要,应用程序只需放弃 WinAPPCSetBlockingHook 返回的值,并最终使用 WinAPPCUnhookBlockingHook 还原默认机制。)

注解

Windows APPC 实现具有默认机制,可通过该机制实现阻止 APPC 函数。 此函数使应用程序能够在阻止时间执行自己的函数,以取代默认函数。

默认阻止函数等效于:

BOOL DefaultBlockingHook (void)  {  
    MSG msg;  
    /* get the next message if any */  
    if ( PeekMessage (&msg,0,0,PM_NOREMOVE)  )  {  
        if ( msg.message = = WM_QUIT  )  
            return FALSE;   // let app process WM_QUIT  
        PeekMessage (&msg,0,0,PM_REMOVE) ;  
        TranslateMessage (&msg) ;  
        DispatchMessage (&msg) ;  
    }  
    /* TRUE if no WM_QUIT received */  
    return TRUE;  
}  

如果阻止函数收到WM_QUIT消息,则必须返回 FALSE,以便 Windows APPC 可以将控制权返回给应用程序以处理消息并正常终止。 否则,该函数应返回 TRUE。

此函数是按线程实现的。 它允许特定线程替换阻塞机制,而不影响其他线程。

提供 WinAPPCSetBlockingHook 函数是为了支持那些需要更复杂的消息处理的应用程序,例如,那些采用多文档接口 (MDI) 模型的应用程序。

另请参阅

WinAPPCIsBlocking
WinAPPCCancelBlockingCall