вот написал прогу, которая следит за окном радмина... перед запуском проги обязательно разверните окно радмин-сервера
| Код | unit main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls;
type TForm1 = class(TForm) BitBtn1: TBitBtn; Timer1: TTimer; StatusBar1: TStatusBar; Memo1: TMemo; procedure Timer1Timer(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; h1,h2:HWND; textold:String;
implementation
{$R *.dfm}
//вызывается когда найдено главное окно function EnumWindowsWnd(h:HWND; Form: TForm1): Bool; export;{$ifdef Win32} stdcall; {$endif} Var Nm:Array[0..255] of Char; // буфер для имени Cs: Array[0..255] of Char; // буфер для класса Begin GetWindowText(h,Nm,255); // считываем текст заголовка окна GetClassName(h,Cs,255); // считываем название класса окна if (nm='Current connections') AND (cs='#32770') then begin h1:=h; end; result:=True; // продолжать искать окна… end;
procedure TForm1.FormCreate(Sender: TObject); begin EnumWindows(@EnumWindowsWnd,Longint(Self)); end;
procedure TForm1.Timer1Timer(Sender: TObject); var Tekst:Array[0..255] of Char; // буфер для имени begin if h1 <> 0 then begin statusbar1.Panels[0].Text:=' OK'; h2:=FindWindowEx(h1, 0,'Static', nil); if h2<>0 then statusbar1.Panels[0].Text:=' OK-OK'; GetWindowText(h2,Tekst,255); statusbar1.Panels[1].Text:=Tekst; if tekst<>textold then memo1.Lines.add(datetimetostr(Now)+' '+Tekst); textold:=tekst; end else begin statusbar1.Panels[0].Text:=' NO'; end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin if timer1.Enabled then begin timer1.enabled:=false; BitBtn1.caption:='Следить за радмином'; statusbar1.Panels[0].Text:=''; end else begin timer1.enabled:=true; BitBtn1.caption:='Остановить слежение'; end; end;
end.
| |