Сегодня 11 июля 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
Тренды 🔥
Oracle под давлением Трампа предоставила правительству США 75-% скидку на облако, на очереди — Google Cloud, Azure и AWS 7 мин.
«Бесплатный YouTube Premium» оказался фикцией — рекламу российским блогерам никто не отключал 46 мин.
Новый трейлер раскрыл дату выхода и цену ремастера Warhammer 40,000: Dawn of War — владельцы классической версии получат скидку 2 ч.
Genshin Impact и Honkai: Star Rail станут первыми играми, которые Роскачество проверит на «способы вытягивания денег» у пользователей 3 ч.
Миллионы Mercedes-Benz, Volkswagen и Škoda оказалось можно взломать по Bluetooth 4 ч.
Олдскульный хоррор Heartworm в духе Resident Evil и Silent Hill не заставит себя долго ждать — дата выхода и новый трейлер 5 ч.
В Windows 11 появился ИИ-агент, помогающий с настройками ОС 5 ч.
У разработчиков «Мира танков» появился новый управляющий — это компания, учреждённая несколько дней назад 6 ч.
Фанаты нашли подтверждение недавних слухов о Red Dead Redemption 2 и GTA IV на официальном сайте Rockstar 7 ч.
Россиянина приговорили к трём годам тюрьмы за кражу технологий ASML для создания производства чипов в России 7 ч.
Суд обязал МТС выплатить штраф в 3 млрд рублей за необоснованное повышение тарифов 4 ч.
Разработчик зрения для роботов RealSense отделился от Intel и привлёк $50 млн инвестиций 4 ч.
Смарт-часы станут производительнее и эффективнее — Qualcomm, наконец, разработает для них новый процессор 5 ч.
«Самая старая комета, которую мы когда-либо видели» — учёные оценили возраст третьего межзвёздного объекта в 7 млрд лет 5 ч.
Бюрократы да экологи: Microsoft посетовала на трудность развития ЦОД в Европе 6 ч.
Умные серьги и ожерелья не за горами — Samsung задумалась о новых формфакторах носимых устройств 7 ч.
Colorful показала видеокарту GeForce RTX 5000 iGame Ultra с двумя слотами M.2 для SSD 7 ч.
Sony показала спецверсии PlayStation 5 Ghost of Yotei Limited Edition 7 ч.
Silicon Motion представила SSD-контроллер с PCIe 6.0 и скоростью до 28 Гбайт/с 7 ч.
Curator: DDoS-атак во втором квартале стало в 1,5 раза больше, а рекордный ботнет вырос до 4,6 млн устройств 9 ч.