Как быть OnTop, но не OnTop полноэкранного приложения - PullRequest
2 голосов
/ 04 февраля 2012

Итак, я попытался найти лучшую часть дня для ответа на простой вопрос. Я хочу, чтобы мое приложение на C # вызывало другую winform таймер, а затем закрывало ее после задержки. Достаточно просто, сделано и сделано. Теперь моя проблема в том, что я хочу, чтобы он был поверх других приложений, если они не на весь экран. Под этим я подразумеваю настоящее полноэкранное приложение, такое как игра. Я не хочу вмешиваться в такое приложение, поскольку оно должно иметь приоритет над моим приложением.

Проблема заключается в том, что я использую свойство 'OnTop' во всплывающей форме и, хотя оно отлично работает для любых других приложений, я тестировал его во время игры в полноэкранную игру и в форму, когда она "Show () s, берет полноэкранное приложение и переводит его в оконный режим.

Является ли это предполагаемым эффектом свойства OnTop в полноэкранных приложениях? Если да, то есть ли способ, чтобы моя форма всплывала поверх обычных оконных окон и не мешала полноэкранным приложениям?

Любые ссылки, например, пинок в общем направлении - это здорово. Единственные хиты, с которыми я сталкиваюсь при поиске winforms, включающих полноэкранный режим, - это люди, пытающиеся перевести свое приложение в полноэкранный режим или отвлекающие их внимание от другого приложения.

Спасибо заранее.

(я не публиковал какой-либо код из-за того, что это просто winform, который является «formX: Show ()» в таймере с установленным свойством onTop)


(РЕДАКТИРОВАТЬ) Итак, благодаря awilson53, который поставил меня на правильный путь, я смог найти метод (хотя и несколько требовательный), чтобы определить, является ли приложение полноэкранным. Кажется, что это довольно просто, и "хорошо дух", ответ после всего, что сказано и сделано.

95% кредита принадлежит автору статьи: http://www.richard -banks.org / 2007/09 / как обнаружить другое приложение-is.html

~ 5% идет к awilson53 за то, что я выбрал правильный путь. :)

1 Ответ

4 голосов
/ 04 февраля 2012

Проверьте эту оболочку для функции EnumWindows.Это позволит вам перечислить все открытые окна и определить их состояние.Вы захотите проверить свойство EnumWindowItem.Maximized, и если оно истинно, установите для свойства OnTop значение false.Если ни один из возвращаемых EnumWindowItem Maximized вы не можете установить для OnTop значение true.

...