Я разрабатываю Application Desktop Панель инструментов (следующая панель инструментов). Панель инструментов получает ABN_FULLSCREENAPP
уведомление при открытии или закрытии полноэкранного окна приложения (например, через F11). Окно является полноэкранным, когда его клиентская область занимает весь экран. Панель инструментов должна выходить из самого верхнего z-порядка, чтобы они не закрывали полноэкранное окно. Для этого я использую SetWindowPos()
с флагом HWND_BOTTOM/HWND_TOPMOST
.
Проблема: в Windows 10, когда открывается полноэкранное окно приложения (например, окно проводника через F11), панель инструментов получает ABN_FULLSCREENAPP
и отправляется в нижний z-порядок. Затем при нажатии Win + Tab появляется представление задач. Представление задач занимает всю рабочую область экрана — весь экран исключает область панели задач и область панели инструментов. Но панель инструментов остается под полноэкранным окном, а такбар появляется сверху, см. изображение ниже. Я хочу, чтобы панель инструментов также находилась поверх полноэкранного окна, когда TaskVew открыт.
Во время открытия представления задач панель инструментов не получает никаких сообщений. Очевидно, поскольку Microsoft приостановила разработку ADT API, для панелей инструментов нет специального сообщения.
Возможные решения:
1) Используйте решение из похожего вопроса выполнив функцию в таймере между открытием и закрытием полноэкранного окна;
2) Использовать LowLevelKeyboardProc()
с SetWindowsHookEx()
.
Оба решения не элегантны. Если вы знаете другой метод обнаружения открытия/закрытия TaskView, пожалуйста, сообщите. Недокументированные методы также полезны.
isTaskViewOpen()
по таймеру, пока открыто полноэкранное окно. - person Remy Lebeau   schedule 18.10.2017