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