Сегодня 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
Тренды 🔥
Microsoft испытала ИИ-доктора MAI-DxO, который ставит диагнозы в 4 раза точнее врачей 3 ч.
The Blood of Dawnwalker, Code Vein 2 и многие другие: анонсирована игровая презентация Bandai Namco Summer Showcase 2025 4 ч.
Комиссионный хаос: Apple изменила правила App Store для ЕС так, что теперь их никто не понимает 5 ч.
«Это был ошибочный выбор»: авторы The Alters подтвердили, что в игру попал ИИ-контент, и объяснили, как так получилось 5 ч.
AMD выпустила драйвер с поддержкой FSR 4 для Monster Hunter Wilds и GTA V Enhanced 6 ч.
Календарь релизов — 1–6 июля: Mecha Break, Dying Light Retouched и девятый сезон Diablo IV 6 ч.
Avanpost: в корпоративном сегменте по-прежнему большей частью полагаются на обычные пароли и LDAP 6 ч.
Надёжный инсайдер раскрыл, когда ждать анонс и релиз следующей Ghost Recon 7 ч.
Rockstar готовится к старту рекламной кампании GTA VI — студии понадобились специалисты по локализации, в том числе русской 8 ч.
Миллионы наушников можно превратить в подслушивающие устройства из-за уязвимости в чипе Bluetooth 8 ч.
Новая статья: Обзор Core Ultra 7 265K: гадкий утёнок 3 ч.
В России вышло игровое кресло Filum FL-CH-G-070 с надёжной конструкцией и эргономичной посадкой 3 ч.
ИИ создаст спрос на передовые чипы: выпуск 7-нм и более тонких полупроводников вырастет на 69 % к 2028 году 4 ч.
Google подключит серверы к термоядерному реактору Commonwealth Fusion Systems 4 ч.
В деревню, в глушь, на север: московский регион страдает от дефицита мощностей ЦОД, но скоро операторы могут уйти в провинцию 5 ч.
DJI выпустила грузовой дрон FlyCart 100 с грузоподъёмностью до 80 кг и передовыми системами безопасности 6 ч.
Дубай стал на шаг ближе к запуску аэротакси — Joby Aviation доставила первый серийный электролёт в ОАЭ 9 ч.
SpaceX запустила британский спутник для производства полупроводников прямо на орбите Земли 10 ч.
Слухи: Apple выпустит недорогой MacBook с чипом от iPhone 10 ч.
Б/у автоаккумуляторы запитали ИИ ЦОД с 2 тыс. ускорителей 11 ч.