Является ли диспетчер задач особым видом окна "всегда сверху" для windows 10?
Если мое окно имеет расширенный набор стилей "всегда сверху", я ожидаю, что оно будет поверх всех окон, которые не имеют набора стилей "всегда сверху", и тех окон, которые имеют набор стилей "всегда сверху", но были активированы до активации моего окна.
Чтобы проверить эту функцию, я открываю окно Диспетчера задач-установите его всегда сверху, а затем я открываю свое окно (myWindow
).
В Windows 7 я наблюдаю ожидаемое поведение - myWindow
приходит на вершину задачи менеджер.
{[6] однако}, в Windows 10, это не тот случай. Диспетчер задач "всегда сверху" других окон, даже если эти окна сами по себе имеют набор стилей "всегда сверху".
Есть ли что-то особенное, что они делают с диспетчером задач в Windows 10? Если да, то есть ли какая-то работа по переносу моего окна на вершину диспетчера задач? Я пытался просто использовать функцию BringWindowToTop
, но это не работает. Так же как и setWindowPos
с HWND_TOP
в качестве значения для hWndInsertAfter
аргумент.
2 ответов:
В Windows 8 было внесено много изменений в Диспетчер задач. Было бы совсем не удивительно, что среди этих изменений был специальный код, гарантирующий, что он всегда находится поверх всех других окон, всегда находящихся сверху. Microsoft не будет нарушать никаких договорных гарантий, делая это, так как Диспетчер задач является встроенной частью операционной системы. Он может делать все, что ему нравится с компонентами ОС.
Чтобы ответить на ваш фактический вопрос, нет никакого документированного API для этого.
WS_EX_TOPMOST
это самое лучшее, что у тебя есть. Он предназначен для помощи пользователю, а не для того, чтобы вытравить окно вашего приложения в сетчатке глаза.Когда два разных окна имеют этот набор стилей, поведение зависит от реализации. Единственная гарантия, которую вы получаете, - это то, что окна со стилем
WS_EX_TOPMOST
всегда находятся поверх других окон без этого стиля в порядке Z. В противном случае система может разрешать конфликты по своему усмотрению, включая сохранение самого последнего активного верхнего окна на вершине, нарушая свяжите, заставляя окна, принадлежащие системным компонентам, наверху, или даже наказывая процессы, которые имеют более одного окна с этим стилем, заставляя их окна(ы) в нижней части "самого верхнего" стека.Соответствующее чтение:
Из небольшого исследования, которое я сделал некоторое время назад:
Менеджер задач действительно является "особым видом" всегда на высоте.
- окно Диспетчера задач создается со следующей недокументированной функцией:
CreateWindowInBand
.- попытка использовать эту функцию из другого процесса приводит к
ERROR_ACCESS_DENIED
. Возможно, только подписанный процесс Microsoft может использовать его.
Comments