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 fr 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 Zurcksetzen des Hooks, zur
v”lligen Umlenkung
Rckgabewert:
16-bit-Hook-Handle fr Unhook, 0 bei Fehler
}
function Unhook(h: THandle):Bool;
{Rckgabewert TRUE wenn OK
FALSE wenn h ungltig 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
|
|