Мы реализовали некоторый пользовательский код рисования всплывающей подсказки, который запускает события Tick
таймера. Всякий раз, когда происходит это событие, мы проверяем, чтобы наш элемент управления был видимым (this.Visible
) и являлся окном переднего плана (GetForegroundWindow()
).
Проблема, с которой мы сталкиваемся, связана с окнами «всегда сверху», такими как «Диспетчер задач» или «Обозреватель процессов» (когда включена опция «всегда сверху»). Поскольку эти окна всегда находятся сверху, иногда наше приложение закрывается / закрывается такими окнами, но наша всплывающая подсказка по-прежнему всплывает и отображается поверх верхнего окна.
Я пытался использовать свойство Form.TopMost
, но это недопустимо, потому что в этом случае всплывающие подсказки никогда не появляются, если где-либо есть окно "всегда сверху". В этом случае наше приложение даже активно, поэтому мы должны показывать всплывающие подсказки.
Как мне определить / определить, есть ли окно "всегда сверху", покрывающее область в моей форме, где находится мышь? Я хочу предотвратить отображение всплывающей подсказки в окне.