Узнать информацию об окне под курсором

Для выполнения этого примера, поместите 3 компонента TLabel (lblHandle, lblClassName, lblText) и TTimer (Timer1) на форму. Запишите и выполните следующий код:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type
TfrmMain = class(TForm)
lblHandle: TLabel;
lblClassName: TLabel;
lblText: TLabel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
procedure ShowHwndAndClassName(CrPos: TPoint) ;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
frmMain.FormStyle := fsStayOnTop;
Timer1.Interval := 50;
end;
procedure TfrmMain.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName,
Text : array [0..255] of char;
begin
hWnd := WindowFromPoint(CrPos) ;
lblHandle.Caption := 'Handle : ' + IntToStr(hWnd) ;
if boolean(GetClassName(hWnd, aName, 256)) then
lblClassName.Caption := 'ClassName : ' + string(aName)
else
lblClassName.Caption := 'ClassName : not found';
SendMessage(hWnd, WM_GETTEXT,
SizeOf(Text), integer(@Text)) ;
lblText.Caption := 'Text :' + Text;
end;
procedure TfrmMain.Timer1Timer(Sender: TObject);
var
rPos: TPoint;
begin
if boolean(GetCursorPos(rPos))
then ShowHwndAndClassName(rPos) ;
end;
end.
Все!
Комментарии