Как заставить Aero рисовать окно без границ так, как будто оно активно, даже если это не так?

Я хотел бы иметь тот же эффект, что и панель задач windows 7.
Я искал в этом вопросе: Keep Window Looking Active
Это отлично работает, но только если окно имеет неклиентскую область.

Мое окно не имеет границ, и его содержимое (просто черный фон) отображается как неактивное, что бы я ни делал.

Я установил флаги моего окна как у панели задач Windows 7, но это не помогло.

Моя единственная мысль на данный момент - нарисовать его с границами и просто обрезать их, есть ли лучший способ достичь того, что я хочу?

EDIT 1:
Обрезание не сработало, после обрезания границ содержимое окна отображается как неактивное окно. Как же тогда работает панель задач в windows 7?

EDIT2:
Добавляю несколько фотографий, чтобы лучше объяснить, следующее содержимое окна имеет черный фон.

Это неактивное окно (содержимое отображается темным): Inactive window

Это активное окно:
Active window

Если окно не имеет клиентской области, содержимое всегда отображается как неактивное окно, однако панель задач всегда отображается как активное окно и не имеет NC области (по крайней мере, согласно spy++). Это то, что я пытаюсь имитировать.

EDIT3:
Делюсь своими недавними открытиями. Главное окно explorer.exe безрамочное и имеет следующие флаги: Explorer image parameters

Я нырнул в экспортируемые функции процесса explorer'а dwmapi.dll: Explorer dwmapi.dll exported functions

он использует DwmEnableBlurBehindWindow, как и я.
Я проверил недокументированные ординарные функции, и ни одна из них не связана с рендерингом аэростекла как активного.

Может быть, правила DWM не применимы к explorer?

24
задан Community 23 May 2017 в 10:30
поделиться