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) 模型的應用程式。