Сегодня 01 декабря 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
Тренды 🔥
Ранний доступ экшена Into the Fire о выживании на разбушевавшемся вулканическом хребте стартует в 2026 году 11 ч.
ИИ-модель Alibaba Qwen3-VL способна уловить почти все детали двухчасового видео, лишь раз его «просмотрев» 13 ч.
Аудитория условно-бесплатного ролевого экшена Where Winds Meet выросла до 9 млн за две недели после релиза 15 ч.
Психологический хоррор The 9th Charnel о группе пропавших учёных-генетиков получил дату релиза 15 ч.
Google отозвала жалобу на Microsoft по поводу антиконкурентной практики Azure псле запуска расследования в ЕС 18 ч.
Кооперативное приключение Split Fiction получило неофициальную русскую озвучку от Mechanics VoiceOver 21 ч.
Сборник хорроров Layers of Fear: The Final Masterpiece Edition от авторов ремейка Silent Hill 2 выйдет на Nintendo Switch 2 уже 19 декабря 22 ч.
Инвесторы не спешат пугаться ИИ-пузыря — деньги в стартапы льются как прежде 23 ч.
Новая статья: Goodnight Universe — колыбельная для крошки. Рецензия 30-11 00:01
Новая статья: Gamesblender № 754: кризис на рынке памяти, Pioner не для российского Steam и 20-летие Xbox 360 29-11 23:39
Sony Bank выпустит в США стейблкоин для упрощения расчётов в экосистеме материнской компании 22 мин.
Новая статья: Компьютер месяца — декабрь 2025 года 8 ч.
Для невышедших Intel Xeon Granite Rapids-WS уже представлена материнская плата Adlink ISB-W890 формата CEB 14 ч.
Вьетнам годами не пускал китайское 5G-оборудование Huawei и ZTE, но новые пошлины США, похоже, заставили власти передумать 14 ч.
AMD случайно подтвердила подготовку Ryzen 7 9850X3D — до анонса осталось чуть больше месяца 15 ч.
Samsung станет крупнейшим производителем телевизоров 20-й год подряд, несмотря на натиск китайских конкурентов 16 ч.
Ускорители вычислений Baidu имеют все шансы стать хитом китайского рынка 24 ч.
SK hynix запустит тотальное расширение фабрик памяти DRAM, чтобы победить дефицит 24 ч.
Micron инвестирует $9,6 млрд в завод по производству памяти HBM в Японии 30-11 00:31
Первый в мире частный научный спутник успешно выведен в космос — он будет изучать звёзды в ультрафиолете 29-11 18:57