пятница, 12 августа 2011 г.

Получить дескриптор окна. Get Handle

Копался в исходнике http://www.delphisources.ru/pages/sources/system/2009-year/get-handle.html

Всю полезную работу делает процедура ShowHwndAndClassName, а все остальное - прибамбасы.


procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
hWnd: THandle;
aName: array [0..255] of Char;
Title: string;
begin
hWnd := WindowFromPoint(CrPos);
ed5.Text := IntToStr(hWnd);
if Boolean(GetClassName(hWnd, aName, 256)) then
ed4.Text := string(aName)
else
ed4.Text := 'Class not found';
SetLength (Title, 100);
GetWindowText (hWnd, PChar (Title), 100);
ed3.Text := string(PChar(Title));
ed2.Text := IntToHex (hWnd, 8);
end;

Эта процедура вызывается в таймере.


procedure TForm1.Timer1Timer(Sender: TObject);
var
rPos: TPoint; var
Cursor: TPoint;
begin
if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
GetCursorPos(Cursor);
ed1.Text :=
'X= ' + IntToStr(Cursor.X) + ', Y='+ IntToStr(Cursor.Y);
end;


Сделал маленькую программку, которая выдает всю нужную инфу.



Комментариев нет:

Отправить комментарий