Сегодня 27 сентября 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

Было интересно? Скажите об этом Google, чтобы чаще получать ссылки на наши новости про другое
 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

window-new
Soft
Hard
Тренды 🔥
Новая статья: Marvel’s Wolverine — самый высокобюджетный IQ-тест. Рецензия 7 ч.
Supergiant отметила годовщину Hades 2 бесплатным музыкальным концертом по игре и анонсом документального фильма о разработке 14 ч.
ИИ-агенты OpenAI слили в интернет 53 изображения пользователей ChatGPT — заметили это лишь спустя время 15 ч.
Claude нашёл «новый CRISPR», но учёные засомневались в значимости открытия Anthropic 17 ч.
ИИ-агенты OpenAI оставили миллион следов взлома Hugging Face в открытом интернете 18 ч.
Qualcomm раскрыла план по освобождению от монополии Nvidia в сфере ИИ 21 ч.
ИИ-агенты OpenAI массово атаковали базы данных онлайн в поисках малоизвестных сведений 22 ч.
Из Google DeepMind ушёл ещё один сотрудник, опасающийся разработки сверхмощного искусственного интеллекта 22 ч.
Дональд Трамп и Си Цзиньпин обсудили вопросы безопасности ИИ при личной встрече, но воздержались от подробных заявлений 22 ч.
Апелляционный суд США оставил за Anthropic статус угрозы для национальной безопасности 23 ч.
MSI IPC представила мини-компьютер MS-C9ZA на базе NVIDIA Jetson Orin Nano для периферийного ИИ 10 ч.
TerraMaster представила стоечные NAS семейства 725 Series на базе Intel Xeon 10 ч.
Google отправит ИИ-сервер в космос уже на следующей неделе, но работать он сможет лишь по 15 минут 15 ч.
Обнаружить микробную жизнь на спутнике Сатурна Энцеладе может оказаться проще 18 ч.
К запуску подготовлен первый аппарат Otter для сервисного обслуживания спутников в космосе 21 ч.
Подорожавшая память грозит добить дешёвые ноутбуки — Qualcomm обещает спасение в виде Snapdragon C 22 ч.
Solidigm собралась привлечь $15 млрд в ходе IPO, которое станет крупнейшим в истории США 26-09 06:34
Tesla пока не может выйти на запланированный объём производства 20 000 роботов Optimus в неделю 26-09 06:00
MSI представила три AM4-платы на чипсете AMD B550 для процессоров Ryzen 3000, 4000G и 5000 26-09 05:57
Слухи: Apple до конца года выпустит iPad mini с OLED-экраном, колонки HomePod mini 2 и приставки Apple TV 4K 26-09 00:03