home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
WSWHOOK.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
5KB
|
169 lines
{************************************************************************}
{ }
{ CAPTAIN Hook-Additions as message hooks | Thorsten Petrowski - TPW 1.5 }
{ Copyright (c) 1992 Abacus | Copyright (c) 1992 Data Becker GmbH }
{ }
{************************************************************************}
{ Last change: 11-2-92 :
Adapting to Windows 3.1 Hook functions (HookEx etc.) }
LIBRARY WswHook;
{ Load application to permanent location }
{$C FIXED PERMANENT PRELOAD}
USES
Strings,WinTypes, WinProcs,WObjects,Stdwnds,MMSystem,Win31;
TYPE
Proc = PROCEDURE;
PCallWndProc = ^TCallWndProc;
TCallWndProc = RECORD
LParamHI : Word;
LParamLo : Word;
WParam : Word;
Msg : Word;
Wnd : HWnd;
END;
Var Last : Word;
F: Text;
Message,WEParam,LPLo,LPHi :Integer;
Sounds : Array [0..13,0..200] of char;
Hooki : HHook;
CONST
SaveMsgFunc : TFarProc = NIL ;
CONST SIZE_RESTORED = 0;
SIZE_MINIMIZED= 1;
SIZE_MAXIMIZED= 2;
SIZE_MAXSHOW = 3;
SIZE_MAXHIDE = 4;
SIZE_SEIZED = 5;
PROCEDURE ReadINIProfiles;
EXPORT;
Var z: Integer;
Begin
z := GetProfileString ('WSW_Extended_Sounds','WindowActive','SYSTEMDEFAULT',@Sounds[0,0],199);
z := GetProfileString ('WSW_Extended_Sounds','WindowClose','SYSTEMDEFAULT',@Sounds[1,0],199);
z := GetProfileString ('WSW_Extended_Sounds','Iconify','SYSTEMDEFAULT',@Sounds[2,0],199);
z := GetProfileString ('WSW_Extended_Sounds','IconOpen','SYSTEMDEFAULT',@Sounds[3,0],199);
z := GetProfileString ('WSW_Extended_Sounds','MenuOpen','SYSTEMDEFAULT',@Sounds[4,0],199);
End;
FUNCTION WriteINIProfiles : BOOL;
EXPORT;
Var error : BOOL;
Begin
error := FALSE;
{ Make entries }
if (WriteProfileString ('WSW_Extended_Sounds','WindowActive',Sounds[0])) = FALSE Then error := TRUE;
if (WriteProfileString ('WSW_Extended_Sounds','WindowClose',Sounds[1])) = FALSE Then error := TRUE;
if (WriteProfileString ('WSW_Extended_Sounds','Iconify',Sounds[2])) = FALSE Then error := TRUE;
if (WriteProfileString ('WSW_Extended_Sounds','IconOpen',Sounds[3])) = FALSE Then Error := TRUE;
if (WriteProfileString ('WSW_Extended_Sounds','MenuOpen',Sounds[4])) = FALSE Then Error := TRUE;
WriteProfileString (NIL,NIL,NIL); { Flush INI buffer }
SendMessage (HWND_BROADCAST,WM_WININICHANGE,0,0); { Indicate change to WIN.INI }
WriteIniProfiles := error;
End;
{ Assign an event to another sound }
PROCEDURE ChangeEvent (Idx: Integer; Value: PChar);
EXPORT;
Begin
StrCopy (sounds[idx],Value);
End;
FUNCTION WndHook(Code: Integer; WParam: Word; LParam: LongInt): LongInt;
EXPORT;
VAR
CallDefHookProc: Boolean;
Result: LongInt;
BEGIN
CallDefHookProc := False;
Result := 0;
CASE Code OF
hc_Action:
BEGIN
Message := PCallWndProc(LParam)^.Msg;
WEParam := PCallWndProc(LParam)^.WParam;
LPLo := PCallWndProc(LParam)^.LParamLo;
LPHi := PCallWndProc(LParam)^.LParamHi;
IF (Message = wm_Close) then
Begin
last := wm_Close;
SndPlaySound (Sounds[0],SND_ASYNC);
End;
IF (Message = wm_QueryOpen) then
Begin
last := wm_QueryOpen;
SndPlaySound (Sounds[2],SND_ASYNC);
End;
IF ( (Message = wm_Size) and (WEPAram=SIZEICONIC) ) then
Begin
SndPlaySound (Sounds[1],SND_ASYNC);
End;
IF (Message = wm_InitDialog) then
Begin
SndPlaySound (Sounds[3],SND_ASYNC);
End;
IF (Message = wm_HScroll) or (Message = wm_VScroll) then
Begin
SndPlaySound (Sounds[4],SND_ASYNC);
End;
IF (Message = wm_MOVE) then
Begin
SndPlaySound (Sounds[5],SND_ASYNC);
End;
End;
hc_NoRemove:
BEGIN
END;
ELSE
CallDefHookProc := True;
END;
IF (Code < 0) OR (CallDefHookProc) THEN
Begin
{ WndHook := CallNextHookEx (Code,WParam,LParam,Hooki);}
End;
END;
PROCEDURE HookInstall(Install: Boolean); EXPORT;
BEGIN
IF Install THEN
Begin
Hooki := SetWindowsHookEx (WH_CALLWNDPROC,WndHook,Hinstance,0);
End
ELSE BEGIN
UnHookWindowsHookEx (Hooki);
SaveMsgFunc := NIL;
END;
END;
EXPORTS
ReadINIProfiles;
EXPORTS
HookInstall;
EXPORTS
WriteINIProfiles;
EXPORTS
ChangeEvent;
BEGIN
END.