File: /~heha/hs/hookany.zip/HOOKANY.TXT

HOOKANY, h#s 11/00

16-bit-DLL zum Anzapfen aller Windows-Funktionen

Diese allgemein verwendbare DLL mit einer Schnittstellen-Unit für
Borland Pascal 7 und Delphi 1 ist einsetzbar, um beliebige
Windows-Funktionen global oder gezielt für eine bestimmte Anwendung
zu modifizieren.

Beispielsweise:
* Modifikation von GetOpenFileName zur Aufbesserung des Datei-
  Auswahldialogs (z.B. Umsetzung nach Version-4-Stil, Datum/Uhrzeit-
  Anzeige, Verzeichnisse anlegen, Dateien löschen, lange Dateinamen)
* Auffangen der Zeichenbefehle einer widerspenstigen Anwendung
  (ohne Druckfunktion) via Anzapfung von BeginPaint/EndPaint und
  Versendung von WM_Paint zur Erhaltung einer (scharfen) Metadatei
* Loggen des Aufrufs bestimmter Windows-Funktionen, wie WriteProfileString,
  _lcreate, OpenFile und RegCreateKey

Bedenke: Die Hook-Funktion wird stets im Kontext der laufenden Task
gerufen, besonders zu beachten, wenn Dialoge, Messageboxen o.ä.
"langandauerndes" benutzt werden. Gegebenenfalls auf ungewünschte Tasks
(z.B. die eigene) testen und entsprechend verzweigen. Relativ sicher
ist die Verwendung von PostMessage in der Hook-Funktion.

Nur bedingt geeignet ist HOOKANY für Funktionen mit C-Aufrufkonvention!
Hier ist für <stackframelen> Null anzugeben; der Zugriff auf die Parameter
muß in der Hook-Funktion mit Assembler-Befehlen erfolgen (Ausnahme:
direkte Anzapfung und Verwendung von <cdecl> in Delphi 1).

Wie HOOKANY, spezieller die beiden Funktionen SetHook und Unhook, verwendet
wird, steht in der Unit-Datei HOOK.PAS.
HOOKTEST.PAS ist ein kleines Beispiel, welches Piepsgeräusche um die
Funktion GetOpenFileName setzt, und GetSaveFileName verhindert,
wenn die Task ein Hauptfenster namens 'KCEMU' (also der KC-Emulator) hat.
Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded