Сегодня 08 июня 2026
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
Тренды 🔥
Apple представила новую Siri, снова — Siri AI поселилась на островке iPhone, работает с Google Gemini и умеет анализировать экран 8 мин.
Apple представила iOS 27 — она стала заметно быстрее и отзывчивее на всех совместимых iPhone 29 мин.
После семи лет разработки олдскульная ролевая игра Sea of Stars от создателей The Messenger получила прощальное обновление и вышла на Switch 2 2 ч.
Meta обвинила создателя шпионского софта Pegasus в нарушении судебного запрета и новых атаках на WhatsApp 2 ч.
Основатель разорившейся криптобиржи FTX Сэм Бэнкман-Фрид подал Трампу прошение о помиловании 2 ч.
Сюжетное дополнение к Fable позволит стать новым боссом древнего культа — первые подробности Order of the Hero 3 ч.
Анонсирована первая за девять месяцев большая игровая презентация Nintendo Direct: когда пройдёт, где смотреть, что покажут 4 ч.
Бесстрашная пиратка, Минотавр и бои на мечах вместо стелса: Resonance: A Plague Tale Legacy получила геймплейный трейлер с датой релиза 4 ч.
Paramount отменила амбициозный ролевой экшен Saber Interactive по «Аватару: Легенде об Аанге» 4 ч.
В Spotify появятся онлайн-трансляции с концертов и возможность покупки билетов 6 ч.
Google заказала у Intel производство 3 млн ИИ-процессоров TPU 2 ч.
Акции TSMC и других азиатских техногигантов массово дешевеют вслед за американскими 4 ч.
Россиян не будут заставлять регистрировать аккаунты через отечественные e-mail — «Антифрод 2.0» доработали 5 ч.
Эстонская Skeleton Technologies представила суперконденсаторные ИБП GrapheneUPS для ИИ ЦОД 6 ч.
Российский рынок радиоэлектроники достиг 4 трлн рублей, но зависимость от импорта остаётся высокой 6 ч.
Стартап Windrose Electric, разрабатывающий электрические грузовики, представил концепцию ИИ ЦОД на колёсах 6 ч.
Репортаж со стенда Patriot на Computex 2026: память DDR5-9600, быстрые SSD и решения для эпохи ИИ 6 ч.
Репортаж со стенда PCCooler на Computex 2026: кулеры для самых мощных процессоров, модульный ПК и шаг к серверному охлаждению 8 ч.
Alphacool показала жидкостный кулер для Xbox и другие новинки на выставке Computex 2026 8 ч.
Репортаж со стенда Ocypus на Computex 2026: корпусные дисплеи, СЖО с обдувом VRM, кулеры с дисплеями и новые корпуса 8 ч.