Обнаружение переключателя полноэкранного режима без ручной проверки каждую секунду

У меня самое верхнее окно. Мне нужно, чтобы он был самым верхним по сравнению с любым другим самым верхним окном, но не покрывал какое-либо полноэкранное окно: в частности: {Windows Media Player, Youtube flash player, RDP}

Существует решение с постоянными проверками:

  • каждые миллисекунды ГГГ, которые я проверяю, есть (на том же дисплее) другое самое верхнее окно с размерами, равными размерам экрана.
  • если так: сделайте мое окно не верхним, иначе сделайте его самым верхним.

Но я ищу другое менее ресурсоемкое решение, которое не будет выполнять десятки системных вызовов и обходить дерево самых верхних окон каждую секунду.

Я могу справиться с любым WM_

Я могу ввести крючок в процесс.

Эта проблема:

Как определить полноэкранное окно на одном рабочем столе?

Как определить полноэкранный режим, используя входящие WM_ или любой другой метод, кроме непрерывной проверки?

1 ответ

Проверять, выписываться SetWindowsHookEx() установить крючок CBT (WH_CBT). В частности, в вашем CBTProc() вы получите WHCBT_MOVESIZE уведомление, когда окно перемещается или размер.

Другие вопросы по тегам