Сегодня 26 ноября 2025
18+
MWC 2018 2018 Computex IFA 2018
реклама
Программное обеспечение

Получения HWND оболочки Windows

Автор: Ашот Оганесян

Иногда нужно получить описатель (HWND) главного окна для текущей оболочки (shell) Windows, обычно такой оболочкой является explorer (внутреннее имя - progman). HWND этого окна может понадобиться, например для посылки каких-то управляющих сообщений и т.п.

Документайия Микрософт (MSDN в частности) предлагает нам на первый взгляд очень простое решение - использовать ф-цию FindWindow:

HWND hwndShell = FindWindow("Progman", NULL);

Но что-то мне в этом решении не нравится. Во первых, где гарантия того, что имя оконного класса всегда будет "progman". Во вторых, ф-ция FindWindow использует механизм обмена сообщениями (get/send message) и из-за этого является довольно медленной. И наконец, Win32 API содержит специальную ф-цию, созданную именно для получения HWND оболочки! Как всегда причины, по которым, разработчики скрыли эту ф-цию мне не понятны, но это и не очень важно, ф-ция GetShellWindow прекрасно работает. Вот ее прототип:

HWND GetShellWindow ();

Думаю, можно не описывать ф-цию подробнее, она настолько простая, что необходимость в словах отпадает сама-собой.

Естественно загружать ф-цию придется динамически, напрямую из User32.dll:

typedef HWND (WINAPI *PROCGETSHELLWND)();

PROCGETSHELLWND GetShellWindow;

HMODULE hUser32 = GetModuleHandle("user32");

GetShellWindow = (PROCGETSHELLWND)
GetProcAddress(hUser32,"GetShellWindow");

Ну что же, теперь мы все можем и все умеем, осталось только написать маленький работающий пример: getshellwnd.zip (15Kb)

Оригинал этой статьи на английском языке лежит здесь: Trick 4

Недокументированные ф-ции Windows NT и Windows 95/98 и описания на английском языке: www.codepile.com

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

window-new
Soft
Hard
Тренды 🔥
Учёные обнаружили, что у ИИ пока имеются проблемы с пониманием каламбуров и юмора 48 мин.
Инженеры проиграли ИИ: модель Claude Opus 4.5 справилась с заданием Anthropic лучше любого из людей 5 ч.
Голосовой режим ChatGPT встроили в чат — он стал естественнее и его можно перебивать 6 ч.
Black Forest Labs представила ИИ-генератор изображений FLUX.2 с оптимизацией для видеокарт GeForce RTX 6 ч.
«Блокнот» в Windows 11 получил поддержку таблиц и больше ИИ-возможностей 8 ч.
Мультиплеерный экшен Spellcasters Chronicles от создателей Heavy Rain и Detroit: Become Human готовится к «бете», но только для избранных 8 ч.
Тиранид-прайм, новая операция и Кровавые Ангелы: для Warhammer 40,000: Space Marine 2 вышло крупное обновление «Утилизация» 10 ч.
Хакеры научились проникать на ПК через поддельный экран «Центра обновления Windows» 10 ч.
Появились первые намёки, во что превратятся Android и ChromeOS после слияния 11 ч.
«Стресс-тест не только серверов, но и наших мозгов с нервами»: режиссёр Escape from Tarkov подвёл итоги недели с релиза и раскрыл, что ждёт игру дальше 12 ч.
Планы Meta использовать ИИ-ускорители Google TPU ударили по акциям NVIDIA 5 ч.
Новая статья: Обзор маршрутизатора Netcraze Ultra (NC-1812): новое имя, новый Wi-Fi 6 ч.
Samsung начала массовое производство 3-Гбайт чипов GDDR7 со скоростью 28 Гбит/с, и готовит более быстрые варианты 9 ч.
Huawei представила гибридный планшет MatePad Edge — 14,2" OLED, ПК-процессор и батарея на 12 900 мА·ч от $845 10 ч.
Финляндия создаст крупнейший в мире тепловой аккумулятор из целой горы песка 11 ч.
Японский конкурент TSMC начнёт строительство 1,4-нм фабрики чипов в 2027 году 11 ч.
Framework перестала продавать модули памяти из-за перекупщиков и предупредила о повышении цен 12 ч.
TSMC подала в суд на бывшего топ-менеджера, который переметнулся в Intel 12 ч.
Акции Nvidia обвалились на 4 % из-за слухов о том, что Meta нацелилась на ИИ-чипы Google 12 ч.
Компьютеры в России вот-вот снова подорожают — закупочные цены уже выросли на 5–10 % из-за кризиса памяти 12 ч.