Сегодня 15 апреля 2026
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
Тренды 🔥
«Группа Астра» представила неизменяемый режим Astra Linux Server для контейнерных сред 7 ч.
Звезда Marvel’s Spider-Man 2 взбудоражил фанатов тизером Marvel’s Spider-Man 3 8 ч.
Трилогия классических ролевых игр Gothic выйдет на консолях Xbox и PlayStation до конца ноября 8 ч.
Apple давит на блогера из-за утечки iOS 26 — требует раскрыть источники 9 ч.
Подразделение Microsoft в России признано банкротом 9 ч.
Приложение Google для настольных компьютеров теперь доступно пользователям Windows по всему миру 9 ч.
За месяц до погружения в пучины раннего доступа Subnautica 2 осталась без издателя 9 ч.
Киберпанковый боевик Replaced добрался до релиза и заслужил одобрение критиков — игра приятно удивила ценой в российском Steam 11 ч.
Starfield вышла на PS5 в неиграбельном виде, но Bethesda пообещала всё исправить 11 ч.
Microsoft объяснила, почему незаметно отказалась от возможности активации Windows 11 по телефону 11 ч.
За три года расходы Nvidia на гарантийное обслуживание взлетели в 11 раз 10 мин.
Новая статья: Обзор игрового OLED 4K-монитора MSI MAG 322UP QD-OLED E16: достаточный уровень 5 ч.
Sophia Space обкатает софт на ИИ-спутниках Kepler перед запуском собственных космических ЦОД 6 ч.
Sony представила игровой OLED-монитор Inzone M10S II с частотой до 720 Гц и ценой $1100 7 ч.
Sony выпустила полноразмерную игровую открытую гарнитуру Inzone H6 Air с пространственным звуком за $200 7 ч.
Rolls-Royce разработает малые модульные ядерные реакторы для Великобритании 9 ч.
«Медведково-2», флагманский объект РТК-ЦОД, вошёл в реестр дата-центров Минцифры России 10 ч.
Представлена серия экшн-камер GoPro Mission 1 с поддержкой съёмной оптики Micro Four Thirds 11 ч.
Энтузиаст запустил ИИ-модель на древнем мини-ЭВМ PDP-11 с процессором на 6 МГц и 64 Кбайт ОЗУ 11 ч.
Amazon поглотила спутникового оператора Globalstar за $11,57 млрд и договорилась о сотрудничестве с Apple 12 ч.