logkeys.pp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. unit logkeys;
  2. interface
  3. Procedure StartKeyLogging;
  4. Procedure StopKeyLogging;
  5. Function IsKeyLogging : Boolean;
  6. Procedure SetKeyLogFileName(FileName : String);
  7. implementation
  8. uses sysutils,keyboard;
  9. var
  10. NewKeyBoardDriver,
  11. OldKeyBoardDriver : TKeyboardDriver;
  12. Active,Logging : Boolean;
  13. LogFileName : String;
  14. KeyLog : Text;
  15. Function TimeStamp : String;
  16. begin
  17. TimeStamp:=FormatDateTime('hh:nn:ss',Time());
  18. end;
  19. Procedure StartKeyLogging;
  20. begin
  21. Logging:=True;
  22. Writeln(KeyLog,'Start logging keystrokes at: ',TimeStamp);
  23. end;
  24. Procedure StopKeyLogging;
  25. begin
  26. Writeln(KeyLog,'Stop logging keystrokes at: ',TimeStamp);
  27. Logging:=False;
  28. end;
  29. Function IsKeyLogging : Boolean;
  30. begin
  31. IsKeyLogging:=Logging;
  32. end;
  33. Function LogGetKeyEvent : TKeyEvent;
  34. Var
  35. K : TKeyEvent;
  36. begin
  37. K:=OldkeyboardDriver.GetKeyEvent();
  38. If Logging then
  39. begin
  40. Write(KeyLog,TimeStamp,': Key event: ');
  41. Writeln(KeyLog,KeyEventToString(TranslateKeyEvent(K)));
  42. end;
  43. LogGetKeyEvent:=K;
  44. end;
  45. Procedure LogInitKeyBoard;
  46. begin
  47. OldKeyBoardDriver.InitDriver();
  48. Assign(KeyLog,logFileName);
  49. Rewrite(KeyLog);
  50. Active:=True;
  51. StartKeyLogging;
  52. end;
  53. Procedure LogDoneKeyBoard;
  54. begin
  55. StopKeyLogging;
  56. Close(KeyLog);
  57. Active:=False;
  58. OldKeyBoardDriver.DoneDriver();
  59. end;
  60. Procedure SetKeyLogFileName(FileName : String);
  61. begin
  62. If Not Active then
  63. LogFileName:=FileName;
  64. end;
  65. Initialization
  66. GetKeyBoardDriver(OldKeyBoardDriver);
  67. NewKeyBoardDriver:=OldKeyBoardDriver;
  68. NewKeyBoardDriver.GetKeyEvent:=@LogGetKeyEvent;
  69. NewKeyBoardDriver.InitDriver:=@LogInitKeyboard;
  70. NewKeyBoardDriver.DoneDriver:=@LogDoneKeyboard;
  71. LogFileName:='keyboard.log';
  72. Logging:=False;
  73. SetKeyboardDriver(NewKeyBoardDriver);
  74. end.