Узнать информацию об окне под курсором
Для выполнения этого примера, поместите 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.
Все!
Комментарии