Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Получить заголовок элемента управления под мышкой

Delphi , ОС и Железо , Мышка и Курсор

Получить заголовок элемента управления под мышкой

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

function GetCaptionAtPoint(CrPos: TPoint): string;
 var
   textlength: Integer;
   Text: PChar;
   Handle: HWND;
 begin
   Result := 'Empty';
   Handle := WindowFromPoint(CrPos);
   if Handle = 0 then Exit;
   textlength := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);
   if textlength <> 0 then
   begin
     getmem(Text, textlength + 1);
     SendMessage(Handle, WM_GETTEXT, textlength + 1, Integer(Text));
     Result := Text;
     freemem(Text);
   end;
 end;

Here is the translation of the text into Russian:

Функция Delphi под именем GetCaptionAtPoint получает заголовок (или название) элемента окна на конкретной точке на экране. Функция принимает структуру TPoint в качестве входного параметра, которая представляет координаты точки, где находится курсор мыши.

Разбивка кода:

  1. Она инициализирует переменную результата в 'Empty', что означает, что если не будет найдено окно на указанной точке, функция вернет пустую строку.
  2. Она использует функцию WindowFromPoint для получения handle (HWND) окна на указанной точке. Если нет окна на этой точке, handle будет установлен в 0.
  3. Если был получен handle окна, она отправляет сообщение WM_ GETTEXTLENGTH окну для получения длины текста (т.е., длины заголовка окна). Это сообщение возвращает количество символов в заголовке окна.
  4. Если длина текста не равна 0, она выделяет память для строки с помощью функции GetMem и устанавливает размер на длину текста плюс один (чтобы accommodate null-terminated символ в конце).
  5. Она отправляет еще одно сообщение, WM_ GETTEXT, окну с выделенной памятью как ее назначением. Это сообщение получает фактический заголовок окна и хранит его в выделенной памяти.
  6. Наконец, она устанавливает переменную результата в полученный заголовок и освобождает выделенную память с помощью функции FreeMem.

Функция возвращает заголовок окна на указанной точке или пустую строку, если нет окна на этой точке.

Альтернативное решение - использовать функцию GetWindowText из Windows API для получения заголовка окна на конкретной точке. Функция более проста и не требует отправки custom сообщений, как в этом реализации:

function GetCaptionAtPoint(CrPos: TPoint): string;
var
  Handle: HWND;
begin
  Result := '';
  Handle := WindowFromPoint(CrPos);
  if Handle <> 0 then
    Result := GetWindowText(Handle, PChar(Result), 255);
end;

Обратите внимание, что GetWindowText имеет ограниченный буфер размером в 255 символа, поэтому вам может потребоваться изменение размера буфера или использование болееadvanced метода, если вы работаете с очень длинными заголовками.

Функция GetCaptionAtPoint позволяет получить заголовок элемента управления, на который наведен курсор мыши, и возвращает его в виде строки.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Мышка и Курсор ::


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:42:57/0.0074119567871094/2