Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить позицию активного окна

Delphi , Программа и Интерфейс , Формы

Получить позицию активного окна

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.Button1Click(Sender: TObject);
 var
   hWindow: HWnd;
   r:       TRect;
 begin
   hWindow := GetForegroundWindow;
   GetWindowRect(hWindow, r);
   Memo1.Clear;
   with Memo1.Lines do
   begin
     Add('Top   : ' + IntToStr(r.Top));
     Add('Left  : ' + IntToStr(r.Left));
     Add('Bottom: ' + IntToStr(r.Bottom));
     Add('Right : ' + IntToStr(r.Right));
   end;
 end;

Here's the translation of the text into Russian:

Эта процедура Delphi, которая получает позицию активного окна и отображает ее в компоненте Memo. Вот разбивка кода:

  1. Функция GetForegroundWindow: Получает.handle foreground window, то есть активное окно.
  2. Функция GetWindowRect: Получает прямоугольник (рамки) указанного окна, включая его позицию и размер.
  3. Блок with Memo1.Lines do очищает компонент Memo и добавляет четыре строки:
    • Top: Верхняя точка клиентской области окна.
    • Left: Левая точка клиентской области окна.
    • Bottom: Нижняя точка клиентской области окна.
    • Right: Правая точка клиентской области окна. Каждая строка префиксирована описательным текстом и сопровождается значением соответствующей свойства, конвертированным в строку с помощью IntToStr.

Чтобы улучшить этот код, вы могли бы рассмотреть добавление обработки ошибок в случае, если foreground window не может быть получен или его прямоугольник не может быть получен. Вы также можете хотелось бы отображать более детальную информацию о активном окне, например, его заголовок или имя класса.

Вот альтернативное решение, использующее unit Windows и предоставляющее более подробную информацию:

procedure TForm1.Button1Click(Sender: TObject);
var
  hWindow: HWnd;
  r: TRect;
begin
  hWindow := GetForegroundWindow;
  if hWindow = 0 then
    Memo1.Lines.Add('Не найдено активного окна.')
  else begin
    GetWindowRect(hWindow, r);
    Memo1.Clear;
    with Memo1.Lines do
    begin
      Add('Заголовок окна: ' + GetWindowText(hWindow));
      Add('Имя класса окна: ' + GetClassName(hWindow));
      Add('Верх: ' + IntToStr(r.Top));
      Add('Лево: ' + IntToStr(r.Left));
      Add('Низ: ' + IntToStr(r.Bottom));
      Add('Право: ' + IntToStr(r.Right));
    end;
  end;
end;

В этом коде используется GetWindowText для получения заголовка окна и GetClassName для получения имени класса окна. Он также включает обработку ошибок в случае, если не найдено активного окна.

В статье описывается процедура на языке Delphi, которая получает координаты активного окна на экране и выводит их в текстовом поле.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:17:42/0.0056228637695312/1