58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
library KeyMon;
|
|
|
|
{ Important note about DLL memory management: ShareMem must be the
|
|
first unit in your library's USES clause AND your project's (select
|
|
Project-View Source) USES clause if your DLL exports any procedures or
|
|
functions that pass strings as parameters or function results. This
|
|
applies to all strings passed to and from your DLL--even those that
|
|
are nested in records and classes. ShareMem is the interface unit to
|
|
the BORLNDMM.DLL shared memory manager, which must be deployed along
|
|
with your DLL. To avoid using BORLNDMM.DLL, pass string information
|
|
using PChar or ShortString parameters. }
|
|
|
|
uses
|
|
{$IFDEF DEBUG}
|
|
Tocsg.Trace,
|
|
{$ENDIF }
|
|
System.SysUtils,
|
|
System.Classes,
|
|
Winapi.Windows,
|
|
ProcessKeyMon in 'ProcessKeyMon.pas',
|
|
DefineKeyMon in '..\DefineKeyMon.pas';
|
|
|
|
{$R *.res}
|
|
|
|
var
|
|
{$IFDEF DEBUG}
|
|
trace: TTgTrace;
|
|
{$ENDIF}
|
|
KMon: TKeyMon = nil;
|
|
|
|
procedure DLLEntryPoint(dwReason: DWORD);
|
|
begin
|
|
case dwReason of
|
|
DLL_PROCESS_ATTACH :
|
|
begin
|
|
{$IFDEF DEBUG}
|
|
// trace := TTgTrace.Create(GetCurrentPath + '.log');
|
|
{$ENDIF}
|
|
KMon := TKeyMon.Create;
|
|
end;
|
|
|
|
DLL_PROCESS_DETACH :
|
|
begin
|
|
if Assigned(KMon) then
|
|
FreeAndNil(KMon);
|
|
{$IFDEF DEBUG}
|
|
// if Assigned(trace) then
|
|
// FreeAndNil(trace);
|
|
{$ENDIF}
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
DllProc := @DLLEntryPoint;
|
|
DLLEntryPoint(DLL_PROCESS_ATTACH);
|
|
end.
|