home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue45 / Message / SpyViewer.pas < prev   
Encoding:
Pascal/Delphi Source File  |  2000-11-02  |  2.5 KB  |  113 lines

  1. unit SpyViewer;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ComCtrls, ExtCtrls;
  8.  
  9. type
  10.  
  11.   TfrmSpyViewer = class(TForm)
  12.     pnlButtons: TPanel;
  13.     pnlMessages: TPanel;
  14.     btnConfigure: TButton;
  15.     btnStart: TButton;
  16.     btnClear: TButton;
  17.     btnSave: TButton;
  18.     btnClose: TButton;
  19.     reMessages: TRichEdit;
  20.     sdSave: TSaveDialog;
  21.     procedure btnClearClick(Sender: TObject);
  22.     procedure btnCloseClick(Sender: TObject);
  23.     procedure btnConfigureClick(Sender: TObject);
  24.     procedure btnSaveClick(Sender: TObject);
  25.     procedure btnStartClick(Sender: TObject);
  26.   private
  27.     FSpying: Boolean;
  28.     procedure SetSpying(V: Boolean);
  29.   public
  30.     procedure AddLine(const Line: String);
  31.     property Spying: Boolean read FSpying write SetSpying;
  32.   end;
  33.  
  34. implementation
  35.  
  36. {$R *.DFM}
  37.  
  38. uses
  39.   SpyEngine,
  40.   SpyConfigure;
  41.  
  42. procedure TfrmSpyViewer.AddLine(const Line: String);
  43. begin
  44.   try
  45.     reMessages.Lines.Add(Line);
  46.     reMessages.Perform(EM_SCROLLCARET, 0, 0);
  47.   except
  48.     reMessages.Lines.Clear;
  49.     reMessages.Lines.Add(Line);
  50.   end;
  51. end;
  52.  
  53. procedure TfrmSpyViewer.btnClearClick(Sender: TObject);
  54. begin
  55.   reMessages.Lines.Clear;
  56. end;
  57.  
  58. procedure TfrmSpyViewer.btnCloseClick(Sender: TObject);
  59. begin
  60.   Close;
  61. end;
  62.  
  63. procedure TfrmSpyViewer.btnConfigureClick(Sender: TObject);
  64. var
  65.   Configurer: TfrmSpyConfigure;
  66.   Hookee: TControl;
  67. begin
  68.   Configurer := TFrmSpyConfigure.Create(Owner);
  69.   try
  70.     Configurer.ShowModal;
  71.   finally
  72.     Configurer.Free;
  73.     Hookee := TMessageSpy(Owner).Hookee;
  74.     btnStart.Enabled := Hookee <> nil;
  75.     if Hookee = nil then
  76.       Caption := 'Message Spy'
  77.     else if (Hookee.Owner <> nil) and (Hookee.Owner.Name <> '') then
  78.       Caption := 'Message Spy - ' + Hookee.Owner.Name + '.' + Hookee.Name
  79.     else
  80.       Caption := 'Message Spy - ' + Hookee.Name
  81.   end;
  82. end;
  83.  
  84. procedure TfrmSpyViewer.btnSaveClick(Sender: TObject);
  85. begin
  86.   if sdSave.Execute then
  87.     reMessages.Lines.SaveToFile(sdSave.FileName);
  88. end;
  89.  
  90. procedure TfrmSpyViewer.btnStartClick(Sender: TObject);
  91. begin
  92.   SetSpying(not FSpying);
  93. end;
  94.  
  95. procedure TfrmSpyViewer.SetSpying(V: Boolean);
  96. begin
  97.   FSpying := V;
  98.   if FSpying then
  99.   begin
  100.     btnStart.Caption := 'Stop';
  101.     btnConfigure.Enabled := False;
  102.   end
  103.   else
  104.   begin
  105.     btnStart.Caption := 'Start';
  106.     btnStart.Enabled := TMessageSpy(Owner).Hookee <> nil;
  107.     btnConfigure.Enabled := True;
  108.   end;
  109.   TMessageSpy(Owner).SetHookActive(FSpying);
  110. end;
  111.  
  112. end.
  113.