1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- unit logkeys;
- interface
- Procedure StartKeyLogging;
- Procedure StopKeyLogging;
- Function IsKeyLogging : Boolean;
- Procedure SetKeyLogFileName(FileName : String);
- implementation
- uses sysutils,keyboard;
- var
- NewKeyBoardDriver,
- OldKeyBoardDriver : TKeyboardDriver;
- Active,Logging : Boolean;
- LogFileName : String;
- KeyLog : Text;
- Function TimeStamp : String;
- begin
- TimeStamp:=FormatDateTime('hh:nn:ss',Time());
- end;
-
- Procedure StartKeyLogging;
- begin
- Logging:=True;
- Writeln(KeyLog,'Start logging keystrokes at: ',TimeStamp);
- end;
- Procedure StopKeyLogging;
- begin
- Writeln(KeyLog,'Stop logging keystrokes at: ',TimeStamp);
- Logging:=False;
- end;
- Function IsKeyLogging : Boolean;
- begin
- IsKeyLogging:=Logging;
- end;
- Function LogGetKeyEvent : TKeyEvent;
- Var
- K : TKeyEvent;
- begin
- K:=OldkeyboardDriver.GetKeyEvent();
- If Logging then
- begin
- Write(KeyLog,TimeStamp,': Key event: ');
- Writeln(KeyLog,KeyEventToString(TranslateKeyEvent(K)));
- end;
- LogGetKeyEvent:=K;
- end;
- Procedure LogInitKeyBoard;
- begin
- OldKeyBoardDriver.InitDriver();
- Assign(KeyLog,logFileName);
- Rewrite(KeyLog);
- Active:=True;
- StartKeyLogging;
- end;
- Procedure LogDoneKeyBoard;
- begin
- StopKeyLogging;
- Close(KeyLog);
- Active:=False;
- OldKeyBoardDriver.DoneDriver();
- end;
- Procedure SetKeyLogFileName(FileName : String);
- begin
- If Not Active then
- LogFileName:=FileName;
- end;
- Initialization
- GetKeyBoardDriver(OldKeyBoardDriver);
- NewKeyBoardDriver:=OldKeyBoardDriver;
- NewKeyBoardDriver.GetKeyEvent:=@LogGetKeyEvent;
- NewKeyBoardDriver.InitDriver:=@LogInitKeyboard;
- NewKeyBoardDriver.DoneDriver:=@LogDoneKeyboard;
- LogFileName:='keyboard.log';
- Logging:=False;
- SetKeyboardDriver(NewKeyBoardDriver);
- end.
|