共用方式為


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