Сегодня 11 июня 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
Тренды 🔥
В Steam пробралась демоверсия ретрофутуристического хоррора RetroSpace, вдохновлённого System Shock 41 мин.
Ролевой боевик Valor Mortis от создателей Ghostrunner не выйдет в один день с Control Resonant — объявлена новая дата релиза 3 ч.
«Абеляр, запускай игру»: для Warhammer 40,000: Rogue Trader вышло сюжетное дополнение «Неисчислимый музеон» и крупное обновление 1.6 4 ч.
«Некоторое количество перемещений рабочих мест»: Anthropic разработала план на случай, если ИИ оставит людей без работы 4 ч.
Gears of War: E-Day станет самой продолжительной игрой серии от The Coalition — новые подробности консольного эксклюзива Xbox 5 ч.
Deezer выпустил детектор ИИ-музыки для других стримингов 6 ч.
Амбициозный авиасимулятор «Корея. Серия Ил-2» опоздает на вылет — новый трейлер и дата полноценного релиза 6 ч.
Anthropic извинилась за непрозрачность в вопросах безопасности Claude Fable 5 7 ч.
ИИ-агент OpenClaw провалил тесты на фишинговые атаки 7 ч.
Google представила очень быструю открытую ИИ-модель DiffusionGemma, которая принципиально отличается от других 8 ч.
Gigabyte представила бюджетную плату B840M Force WIFI6E с разгоном DDR5 и оптимизациями для Ryzen X3D 2 ч.
Google начала переговоры с Samsung о производстве части ИИ-чипа TPU следующего поколения 5 ч.
Huawei готовится вскоре повысить цены на свои устройства 5 ч.
Meta хочет зарабатывать больше денег не на рекламе, но у неё плохо получается 6 ч.
Инстансы Amazon EC2 M9g и M9gd на базе Graviton5 уже доступны в ряде регионов 6 ч.
Развитие ЦОД может столкнуться с «энергетической стеной» к 2030 году 6 ч.
Meta и Reliance Industries расширят партнёрство, построив ИИ-совместимый ЦОД в Индии 6 ч.
Потребление воды ИИ вырастет до 2,27 млрд кубометров к 2030 году — в основном из-за роста энергопотребления 7 ч.
«Мегафон» запустил магистральную линию на базе компактных 400G‑трансиверов российского производства 7 ч.
Vertiv представила серверную стойку Rack Extreme, которая выдержит более 2000 кг оборудования 9 ч.