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: ANSI (CP1252) | 4
|
|