Сегодня 25 июня 2025
18+
MWC 2018 2018 Computex IFA 2018
реклама
Программное обеспечение

Самый быстрый способ получить заголовок окна в Windows NT/2000

Автор: Ашот Оганесян

В продолжении моей предыдущей статьи, я решил описать еще одну интересную и по каким-то причинам недокументированную ф-цию из библиотеки User32.dll.

Я обнаружил эту ф-ции исследуя NT Task Manager (Диспетчер Задач). Надо сказать, эта программа содержит большое кол-во недокументированных ф-ций и безусловно представляет огромный интерес для исследователя внутренностей ОС. Ф-ция InternalGetWindowText обеспечивает самый быстрый механизм получения заголовка указанного окна. Эта ф-ция очень похожа на документированную GetWindowText, но в отличии от последней работает только с юникодом и реализованна через вызов прерывания INT 2E (т.е. не использует априори медленный механизм оправки/получения сообщений), что конечно, значительно повышает скорость. InternalGetWindowText существует и в Windows 95/98, но только как заглушка и вся ее реализация заключается в установке ошибки ERROR_CALL_NOT_IMPLEMENTED и возврате FALSE.

Вот прототип для ф-ции InternalGetWindowText:

BOOL InternalGetWindowText (
HWND hWnd, // описатель окна
LPWSTR lpString, // указатель на буфер, куда записывается заголовок (только юникод!!!)
int nMaxCount, // максимальное кол-во символов, копируемое в буфер
);

Естественно нам придется динамически загружать ф-цию, напрямую из User32.dll:

typedef BOOL (WINAPI *PROCINTERNALGETWINDOWTEXT)(HWND,LPWSTR,int);

PROCINTERNALGETWINDOWTEXT InternalGetWindowText;

HMODULE hUser32 = GetModuleHandle("user32");

InternalGetWindowText = (PROCINTERNALGETWINDOWTEXT)
GetProcAddress(hUser32,"InternalGetWindowText");

Для меня остается загадкой, зачем разработчики (а может менеджеры?) спрятали эту ф-цию? Еще одна странность - почему в реализации ф-ции GetWindowText не использована InternalGetWindowText (как это часто делается со многими другими ф-циями Win32 API, внутри реализованными через вызов ф-ций Native API)?

Ну что же, теперь мы все можем и все умеем, осталось только написать маленький работающий пример: fastgetwndtext.zip (15Kb)

Оригинал этой статьи на английском языке лежит здесь: Trick 3

Не документированные ф-ции Windows NT и Windows 95/98 и описания на английском языке: www.codepile.com

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

window-new
Soft
Hard
Тренды 🔥
Chrome для Android наконец научился переносить адресную строну в нижнюю часть экрана 25 мин.
Nvidia завершила бета-тестирование DLSS Transformer — с ней игры пойдут в 4K и 240 FPS 26 мин.
Diablo IV возглавила июльскую подборку игр для подписчиков PS Plus, а Sony готовится к празднику 2 ч.
HPE делает ставку на повсеместное использование ИИ-агентов 2 ч.
«Сбер» научил GigaChat рассуждать над запросами, но функцию пока открыл не всем 3 ч.
Поддержка модов, новые механики и полноценная A-Life: для S.T.A.L.K.E.R. 2: Heart of Chornobyl вышло крупное обновление 1.5 3 ч.
«Сбер» представил нейросеть Kandinsky 4.1 Video для генерации 10-секундных HD-видео 4 ч.
Cloud.ru представил ИИ-помощника для автоматизации работы с облаком и управления инфраструктурой 4 ч.
Утилита Red OS MediaWriter поможет создать загрузочный USB-накопитель с «Ред ОС» 5 ч.
Мошенники заигрались: аферисты используют Minecraft, Roblox и Brawl Stars для обмана российских школьников 6 ч.
HPE представила новые решения для частных ИИ-фабрик на базе решений NVIDIA 5 мин.
Представлен Fairphone 6 — смартфон с повышенной ремонтопригодностью, 8 годами обновлений и модульными аксессуарами 5 мин.
Vivo представила X Fold 5 — самый лёгкий и защищённый смартфон-книжку в мире. А ещё он совместим с Apple Watch и AirPods 11 мин.
HDMI 2.2 будет поддерживать 16K при 60 Гц и до 96 Гбит/с — утверждены финальные спецификации 52 мин.
Состоялся релиз InfoWatch ARMA Industrial Firewall 3.14 с поддержкой глубокого разбора 16 промышленных протоколов 3 ч.
Гознак построит в Москве ЦОД на 1,5 тыс. стоек 4 ч.
Граждане Индии, Венгрии и Польши впервые полетели на МКС в рамках частной миссии Axiom Space 5 ч.
Intel свернёт производство автопроцессоров ради серверов и ПК 6 ч.
Кавардак на рынке памяти продолжается — 16-Гбит чипы DDR4 стоят уже вдвое дороже DDR5 такой же ёмкости 6 ч.
Апокалиптические астероиды подождут: у NASA выявили отсутствие комплексного плана защиты Земли 6 ч.