AppInit_DLLs 登錄值,Windows 95

文章翻譯 文章翻譯
文章編號: 134655 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

Windows 95 不支援的 DLL 載入處理序的位址空間,透過 AppInit_DLLs 登錄值的使用。在 Windows NT 執行,每個處理程序 Windows NT 載入到處理序的位址空間 AppInit_DLLs 登錄值中所列的 DLL。在 Windows 95 中的類似功能,您可以實作全系統的勾點。本文章顯示範例中,如何執行它。

其他相關資訊

若要實作全系統的勾點,您必須確定 hooked 函式 (回呼函式) 存在於 DLL 中。然後當這個函式會呼叫作業系統將 hooked 的 DLL 對應到目標應用程式的位址空間。實際攔截函式,然後在目標應用程式的程序的運作方式。

有參與建立全系統的攔截程序的本質上是兩個步驟:
  1. 建立 DLL 匯出的函式是用作為連結的函式。實作一個 WH_KEYBOARD 所需的回呼函式後,回呼函式模型在後面的範例函數,全系統的攔截:
          // Trap keyboard messages
          __declspec(dllexport) LRESULT CALLBACK HookFunction(
                           int code,
                           WPARAM wParam,
                           LPARAM lParam)
          {
             char szVCode[50];
    
             //display the virtual key code trapped
             sprintf(szVCode, "Virtual Key code: %lx", wParam);
             MessageBox(NULL, szVCode,"Key stroke", MB_OK);
                    :
                    :
          }
    
       The associated .def file for this DLL might resemble this:
    
          LIBRARY      HOOK
    
          EXPORTS
             HookFunction
    						
  2. 安裝全系統的勾點。若要安裝勾點,DLL 必須載入,擷取,攔截函式的位址,而且 SetWindowsHookEx 呼叫函式的位址。以下是一項範例:
          // add system-wide hook
          hHookDll = LoadLibrary("hook");
          hHookProc = (HOOKPROC) GetProcAddress(hHookDll, "HookFunction");
    
          // Install keyboard hook to trap all keyboard messages
          hSystemHook =  SetWindowsHookEx(WH_KEYBOARD,hHookProc,hHookDll,0);
    						
    一旦應用程式已完成與全系統的勾點,務必復原連結的處理程序,如下所示:
          // Remove the hook and unload the DLL used for the hooking process
          UnhookWindowsHookEx(hSystemHook);
          FreeLibrary(hHookDll);
    						

屬性

文章編號: 134655 - 上次校閱: 2005年3月1日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft Win32 Application Programming Interface?應用於:
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
關鍵字:?
kbmt kbcode kbkernbase kbregistry KB134655 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:134655
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com