DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 134655 - Geändert am: Dienstag, 1. März 2005 - Version: 3.2

 

Zusammenfassung

Das Laden einer DLL in einen Prozess-Adressbereich mithilfe der der Registrierungswert "AppInit_DLLs werden von Windows 95 nicht unterstützt. In Windows NT lädt Windows NT für jeden Prozess ausgeführt, die DLLs in den Registrierungswert "AppInit_DLLs genannten in Adressbereich des Prozesses. Für ähnliche Funktionalität in Windows 95 können Sie einen systemweiten Hook implementieren. Dieser Artikel beschreibt anhand eines Beispiels, wie zu tun.

Weitere Informationen

Um einen systemweite Hook zu implementieren, müssen Sie sicherstellen, dass die verknüpfte (Callback-Funktion)-Funktion in einer DLL vorhanden ist. Dann, wenn diese Funktion aufgerufen werden, das Betriebssystem ordnet die DLL verknüpfte, in der Zielanwendung Adressraum. Die tatsächlichen Funktion verknüpft und fungiert als Teil der Zielanwendung.

Im Wesentlichen aus zwei Schritten sind erstellt einen Hook systemweite beteiligt:
  1. Erstellen einer DLL mit einer exportierten Funktion, die als hooking Funktion verwendet wird. In der Beispielfunktion, die folgt, wird die Callback-Funktion modelliert, nach eine Rückruffunktion ein WH_KEYBOARD implementieren muss systemweite Hook:
          // 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. Installieren Sie systemweite-Hook. Den Hook installieren möchten, die DLL muss geladen werden, die Hookfunktion Adresse abgerufen, und SetWindowsHookEx mit der Funktion Adresse aufgerufen. Hier ist ein Beispiel:
          // 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);
    						
    sobald die Anwendung mit der systemweiten Hook abgeschlossen hat, müssen Sie unbedingt den hooking Prozess wie folgt rückgängig machen:
          // Remove the hook and unload the DLL used for the hooking process
          UnhookWindowsHookEx(hSystemHook);
          FreeLibrary(hHookDll);
    						

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Win32 Application Programming Interface, wenn verwendet mit:
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
Keywords: 
kbmt kbcode kbkernbase kbregistry KB134655 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 134655  (http://support.microsoft.com/kb/134655/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Zurückgezogener KB-ArtikelDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store