Программа на Delphi использует WinAPI для получения текста окна под курсором. Программа создает приложение с основным окном и контролем редактирования, а затем периодически проверяет изменения позиции курсора и получает текст из окна в этой позиции.
Разбивка программы:
Функция GetTextPODCursor вызывается периодически таймером. Эта функция использует GetCursorPos для получения текущей позиции курсора, а затем WindowFromPoint для получения handle окна под курсором.
Если окно под курсором является валидным контролем редактирования (т.е., оно отвечает на EM_GETPASSWORDCHAR), программа отправляет сообщение WM_GETTEXT для получения текста из окна, а затем обновляет контрол редактирования в своем окне с этим текстом.
Функция WndProc вызывается, когда основное окно получает сообщение. Она обрабатывает три типа сообщений:
WM_CREATE: Это вызывается, когда основное окно создается. Программа настраивает таймер и инициализирует контрол редактирования.
WM_TIMER: Это вызывается периодически таймером. Программа вызывает GetTextPODCursor для получения текста из окна под курсором, а затем обновляет контрол редактирования в своем окне с этим текстом.
WM_DESTROY: Это вызывается, когда основное окно уничтожается. Программа останавливает таймер и выходит.
Единица myfuncs содержит несколько функций:
IsNT: Функция проверяет, работает ли система под Windows NT или позднее. Она использует GetVersionEx для получения информации о операционной системе, а затем проверяет, является ли платформенный ID VER_PLATFORM_WIN32_NT.
OPTHDROFFSET: Функция рассчитывает смещение заголовка изображения в файле. Она принимает указатель на файл в качестве входных данных и возвращает смещение.
SpawnThreadNT: Функция создает новый поток, который запускается под указанным процессом. Она использует функцию CreateToolhelp32Snapshot для получения снимка всех процессов на системе, а затем поиска процесса ID в списке процессов. Если она находит процесс ID, она создает новый поток используя OpenProcess и VirtualFreeEx.
Процедура EntryPoint вызывается удаленным потоком, созданным функцией SpawnThreadNT. Она получает текст из окна под курсором используя GetCursorPos, WindowFromPoint и WM_GETTEXT, а затем обновляет контрол редактирования в своем окне с этим текстом.
Обратите внимание, что эта программа использует некоторые низкоуровневые системные вызовы и функции Windows API, поэтому она может требовать специальных разрешений или настройки для запуска. Кроме того, программа не очень устойчива и может зависнуть, если пользователь быстро перемещает курсор или кликает по окну, отличному от основного окна.
Получение текста окна под курсором: программа на WinAPI, способная вывести текст окна, находящегося под курсором.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.