Сегодня 27 апреля 2024
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.
Вечерний 3DNews
Каждый будний вечер мы рассылаем сводку новостей без белиберды и рекламы. Две минуты на чтение — и вы в курсе главных событий.

window-new
Soft
Hard
Тренды 🔥
Анонсирован VR-хоррор Alien: Rogue Incursion, который полностью погрузит игроков в ужасы вселенной «Чужого» 6 ч.
Российская пошаговая тактика «Спарта 2035» про элитных наёмников в Африке получила первый геймплей — демоверсия не выйдет 30 апреля 7 ч.
Власти США позвали Сэма Альтмана, Дженсена Хуанга и Сатью Наделлу помочь им с защитой от ИИ 9 ч.
«В команде явно продали души дьяволу»: игроков впечатлила работа Biomutant на Nintendo Switch, но производительность требует жертв 9 ч.
Microsoft открыла исходный код MS-DOS 4.00 и разместила его на GitHub 10 ч.
Большинство россиян не видит угрозы в ИИ 10 ч.
Китайские клавиатурные приложения Honor, Oppo, Samsung, Vivo и Xiaomi оказались уязвимы перед слежкой 10 ч.
Alphabet удалось развеять опасения по поводу отставания в области ИИ 12 ч.
Рекламные доходы YouTube в первом квартале выросли на 21 % до $8,1 млрд 13 ч.
Инсайдер: Capcom отложила релиз Resident Evil 9, но в 2025 году может выйти другая игра серии 16 ч.
Регулятор в США проверит декабрьское обновление автопилота Tesla, которое должно было улучшить безопасность 4 ч.
Новая статья: Обзор QD-OLED DQHD-монитора Samsung Odyssey OLED G9 G95SC: игровой универсал 6 ч.
Видеокарты MSI семейства Radeon RX пропадают с прилавков — компания «сместила фокус» на GeForce RTX 7 ч.
TSMC научилась создавать монструозные двухэтажные процессоры размером с пластину 8 ч.
Федеральное расследование аварий с автопилотом Tesla нашло их причину — «неправильное использование» 9 ч.
Oppo представила смартфон A60 с Snapdragon 680 и 50-Мп камерой 9 ч.
Япония ужесточит контроль экспорта полупроводников и квантовых технологий куда бы то ни было 9 ч.
Hisense представила ультракороткофокусный лазерный 4K-проектор PX3-PRO для геймеров и киноманов 9 ч.
Intel пожаловалась на производственные проблемы при сборке Core Ultra — из-за этого процессоров не хватает 11 ч.
Великобритания и Новая Зеландия задействуют подводные оптические кабели для распознавания землетрясений и цунами 11 ч.