Source file: /~heha/hs/hookany.zip/HOOK.PAS

unit hook;
{$W-,K+}
{$C MOVEABLE PRELOAD PERMANENT}	{gleiche Attribute wie Unit SYSTEM}
interface
uses WinTypes;

const
  WM_HookEnd=WM_User+201;
  SH_MessageWindow	=$01;
  SH_MessageTask	=$02;
  SH_NoResetHook	=$04;

function SetHook(adr, newadr: Pointer; stackframelen: Word;
  filtertask: THandle; MsgWindow: HWnd; flags:Word): THandle;
{Parameter:
  adr: Anzuzapfende Adresse, z.B. @GetOpenFileName
  newadr: muß auf eine FAR-PASCAL-Funktion mit der gleichen Parameter-
	  Liste zeigen wie die anzuzapfende Funktion;
	  während dieses Funktionsaufrufs ist die Originalfunktion
	  unangezapft!
  stackframelen: Länge Stapelrahmen der Funktion in Bytes
  filtertask: Hook wirkt nur auf angegebene Task, =0 für alle Tasks
  MsgWindow: Fenster oder Task, das WM_HookEnd beim Beenden der Task
	     <filtertask>. Bei filtertask=0 ist MsgWindow ohne Belang
  flags: SH-Flags:
	* SH_MessageWindow: Fenster <MsgWindow> bekommt WM_HookEnd
	* SH_MessageTask: Task <MsgWindow> bekommt WM_HookEnd, ggf.
			  aktuelle Task wenn MsgWindow=0
	* SH_NoResetHook: Direkter Aufruf der Hook-Funktion ohne
			  temporäres Zurücksetzen des Hooks, zur
			  völligen Umlenkung
 Rückgabewert:
  16-bit-Hook-Handle für Unhook, 0 bei Fehler
}
function Unhook(h: THandle):Bool;
{Rückgabewert TRUE wenn OK
 FALSE wenn h ungültig ODER wenn der Hook gerade "aktiv" ist}

implementation
function SetHook;       external 'HOOKANY' index 2;
function Unhook;        external 'HOOKANY' index 3;
end.

Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded