home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windoware
/
WINDOWARE_1_6.iso
/
winutil
/
adg_4_6
/
sb-dll.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-02-21
|
2KB
|
76 lines
/****************************************************************************
Module name: SB-DLL.C
Programmer : Jeffrey M. Richter.
*****************************************************************************/
#include "..\nowindws.h"
#undef NOHELP
#undef NOKERNEL
#undef NOMEMMGR
#undef NOUSER
#undef NOWH
#include <windows.h>
#include "SB-DLL.h"
static HANDLE _hInstance = NULL; // Our instance handle
static FARPROC _fnNextJrnlRcrdHookFunc = NULL;
static DWORD _dwLastEventTime = 0;
DWORD FAR PASCAL JrnlRcrdHookFunc (int nCode, WORD wParam, LPEVENTMSGMSG lpEventMsg);
BOOL FAR PASCAL LibMain (HANDLE hModule, WORD wDataSeg, WORD cbHeapSize, LPSTR lpCmdLine) {
_hInstance = hModule;
if (cbHeapSize != 0) UnlockData(0); // Let data segment move
return(TRUE); // return TRUE if initialization is successful
}
int FAR PASCAL WEP (int nSystemExit) {
switch (nSystemExit) {
case WEP_SYSTEM_EXIT: // System is shutting down.
break;
case WEP_FREE_DLL: // Usage count is zero (0)
break;
}
return(1); // WEP function successful.
}
void FAR PASCAL InstallJrnlHook (BOOL fInstall) {
if (fInstall) {
_fnNextJrnlRcrdHookFunc =
SetWindowsHook(WH_JOURNALRECORD, (FARPROC) JrnlRcrdHookFunc);
_dwLastEventTime = GetTickCount();
} else {
UnhookWindowsHook(WH_JOURNALRECORD, (FARPROC) JrnlRcrdHookFunc);
_fnNextJrnlRcrdHookFunc = NULL;
_dwLastEventTime = NULL;
}
}
DWORD FAR PASCAL GetLastEventTime (void) { return(_dwLastEventTime); }
DWORD FAR PASCAL JrnlRcrdHookFunc (int nCode, WORD wParam, LPEVENTMSGMSG lpEventMsg) {
BOOL fCallDefProc = FALSE;
DWORD dwResult = 0;
switch (nCode) {
case HC_ACTION:
_dwLastEventTime = lpEventMsg->time;
fCallDefProc = TRUE;
break;
case HC_SYSMODALON:
case HC_SYSMODALOFF:
default:
fCallDefProc = TRUE;
break;
}
if ((nCode < 0) || (fCallDefProc && (_fnNextJrnlRcrdHookFunc != NULL)))
dwResult = DefHookProc(nCode, wParam, (LONG) lpEventMsg,
&_fnNextJrnlRcrdHookFunc);
return(dwResult);
}