Сообщение окна отправляется в мою самую верхнюю форму / окно, когда над ним находится панель задач / меню «Пуск»?

У меня есть программа Windows Forms на C # в Windows 7, но я думаю, что она применима к любой программе Windows.

Основная форма моей программы покрывает весь экран и имеет свойство Topmost. Однако, когда я нажимаю кнопку «Пуск», чтобы открыть, например, меню «Пуск», поверх моей формы Always on Top отображаются панель задач и меню «Пуск».

Есть ли оконное сообщение (WM_), которое отправляется в мою форму / окно, когда это происходит, и моя форма / окно больше не является самым верхним окном (или поверх Z-порядка)? Я бы хотел поймать это с помощью WndProc.

Спасибо


person Alex Vang    schedule 21.01.2012    source источник
comment
Что вы собираетесь делать, когда поймаете информацию? Вы хотите, чтобы панель задач и меню «Пуск» не отображались, или вам просто нужно знать?   -  person David Heffernan    schedule 21.01.2012
comment
Я хочу вывести свое окно на передний план с помощью BringToFront. Сейчас я использую таймер каждые 100 миллисекунд для вызова BringToFront, но, боюсь, я трачу ресурсы и, возможно, замедляю работу компьютера.   -  person Alex Vang    schedule 21.01.2012
comment
Разве это не лишает пользователя возможности использовать меню «Пуск»? И это должно выглядеть ужасно, когда панель задач и меню «Пуск» всплывают в поле зрения, а затем скрываются. Какая цель всего этого?   -  person David Heffernan    schedule 21.01.2012
comment
После закрытия моей программы (это очень легко сделать) пользователь может использовать меню «Пуск» как обычно. Это проблема презентации, я хочу, чтобы моя программа всегда была на высоте, пока она работает.   -  person Alex Vang    schedule 21.01.2012
comment
Лучше надеяться, что пользователь не запускает другую программу с той же идеей.   -  person David Heffernan    schedule 21.01.2012
comment
Убедитесь, что программа удаления работает нормально.   -  person Hans Passant    schedule 21.01.2012
comment
@Hans Passant: Программа портативная, не требует установки / удаления :)   -  person Alex Vang    schedule 21.01.2012


Ответы (2)


Я думаю, что разумно использовать Рэймонда Чена его запись в блоге и хотя это кажется просто забавной историей, отнеситесь к ней очень и очень серьезно.

Цитата: «Когда две программы« сражаются »вот так, вы не можете предсказать, какая из них выиграет, но вы можете предсказать со 100% уверенностью, кто проиграет: пользователь».

person rene    schedule 21.01.2012
comment
Спасибо, что поделились этим сообщением в блоге, это было отличное чтение. Постараюсь держать в уме совет. - person Alex Vang; 21.01.2012

Как rene сказал в вышеупомянутом сообщении, это будет состояние гонки, если более 1 приложения будут использовать одну и ту же логику, но если вы все еще хотите это сделать, я думаю, взглянув на Form.Deactivated будет хорошим началом.

person silverspoon    schedule 23.01.2012