Да, это правильно.Операционная система Windows позволяет запускать несколько программ одновременно.То, что вы испытываете, полностью задумано.
Если я правильно помню, свойство TopMost
применяется только к окнам в вашем процессе, и, как вы упоминаете, все это совершенно не имеет значения: пользователь все еще может убить вашуприложение с помощью диспетчера задач.
Нет законного способа обойти это.Это не «ограничение», это особенность.Любое приложение, которое предотвращает закрытие себя с помощью диспетчера задач, опасно тесно связано с категорией программного обеспечения, которое мы называем вредоносным ПО.Ничто хорошее не может выйти из таких занятий.
Соответствующее прочтение: Гонка вооружений между программами и пользователями
Возможно, хорошим компромиссным решением будет сделать вашwindow / form фактически top-most и отключите кнопку Close, чтобы пользователь знал, что он не должен пытаться закрыть его.Этого почти всегда достаточно, чтобы остановить пользователя, который не намерен завершать ваше приложение любыми необходимыми средствами, и это все, что вам когда-либо нужно беспокоиться.
См. Пример кода здесь о том, как заставить ваше окно / форму всегда отображаться поверх других запущенных приложений, установив флаг WS_EX_TOPMOST
или переключив HWND_TOPMOST
.
Я также уже написал подробный ответ здесь о правильном отключении кнопки «Закрыть» путем установки стиля класса CS_NOCLOSE
.