Внешний вид сайта:

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

В этом примере мы рассмотрим, как можно получить информацию об окне или оконном компоненте под курсором.

Пример работы программы

Для выполнения этого примера, поместите 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.

Все!

Комментарии

Нет комментариев. Ваш будет первым!