abdul subhan mohammed Ответов: 2

Как отключить закрытие приложения с панели задач в winform C#


Дорогие Все,

У меня есть заявка на выигрышную форму.

Я хочу предотвратить закрытие приложения с панели задач. Я добавил кнопку, чтобы закрыть приложение, пользователь должен закрыть приложение, используя только эту кнопку.

Что я уже пробовал:

Я попытался отключить щелчок правой кнопкой мыши, но не думаю, что это хорошее решение.
private void uc_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
         //more logic here
    }
}



кто-нибудь может пожалуйста помочь мне. Как я могу предотвратить закрытие приложения извне?

Спасибо

2 Ответов

Рейтинг:
16

OriginalGriff

Во - первых, вы не можете запретить приложению закрываться "кроме как по кнопке" - если ничего другого, то любое приложение или процесс могут быть убиты из Диспетчера задач, и в этом случае ваше приложение даже не получит команду "закрыть".

Когда происходит "нормальный" выход, а не принудительное завершение задачи, вы действительно получаете событие FormClosing, которое вы можете обработать - и это включает в себя команду панели задач "закрыть окно".
Если вы добавляете bool уровня класса, который задается в событии нажатия кнопки, вы можете установить FormClosingEventArgs.Отмените значение true, если вы хотите предотвратить закрытие приложения. Ваши пользователи, вероятно, возненавидят вас, хотя я бы это сделал.


Рейтинг:
1

johannesnestler

Мое решение:
вернитесь к своим требованиям и объясните, почему вы хотите это сделать?
Рассмотрите лучшие/другие решения: режим киоска, не показывающий проводник в первую очередь и т. д. и спросите, действительно ли вам это нужно…

Эмпирическое правило: то, что пользователь видит и выглядит обычным, но не работает так, как ожидалось, будет чувствовать себя "неправильно" - поэтому не связывайтесь со стандартными меню и командами…

Тем не менее, у меня есть достаточно опыта для такого рода вещей из прошлых проектов, где нам приходилось эмулировать "режим киоска". Но у нас был доступ к самой ОС (Windows Embedded и Windows CE)

Вы можете использовать крючки, отключить окно управления Windows, не показывать свое приложение на панели задач и т. д.
Мне даже однажды пришлось зайти так далеко, чтобы реализовать Keyboarddriver для перехвата Alt+Ctrl+Del (он особенный и не поддается подключению, как обычно)


Опять же: если пользователи могут видеть панель задач - блокировка пользователя-это не тот путь!
для всех других решений не показывайте свое приложение на панели задач и не скрывайте его полностью


P. S. ваша идея с щелчку мыши не работает на панели задач - вы должны сделать глобальный Хук