Я знаю, что это очень простой вопрос, но я ищу аккуратное и чистое предложение. Мое приложение – приложение MDI. Создал базовую форму, которая используется во всем приложении. Есть несколько форм, которые мы не хотим, чтобы пользователь закрывался, чтобы избежать человеческих ошибок, которые мы планировали не позволять пользователю закрывать эти формы.
Я попытался установить e.cancel = true в событии закрытия формы, но кажется, что он не работает, может кто-нибудь дать мне некоторые предложения, пожалуйста?
Private void FrmTask_FormClosing(object sender, FormClosingEventArgs e)
Проблема в том, что когда я использую этот код, ни одна из форм в моем приложении MDI не закрывает, даже основную родительскую форму MDI.
Лучший ответ:
Вы также не можете показать кнопку закрытия:
Cody Gray предоставил лучшую ссылку в комментариях, которая также запрещает закрытие Alt-F4:
Предположительно, проблема здесь заключается в том, что вы хотите закрыть окно, когда приложение существует, но не если пользователь пытается закрыть его вручную.
Установка запрета доступа к папкам и диску Windows 10, 8, 7
Для этого вам нужно будет ручное переопределение, скажем, переменную с именем allowShutdown , и метод, который может установить это, когда MdiParent закрывается.
private void Form_Closing(object sender, EventArgs e) < if( !allowShutdown) e.Cancel = true; >public void ForceShutdown()
А затем в вашей родительской форме:
private void Form_Closing(object sender, EventArgs e)
Это предполагает, что вы поддерживаете ссылку на дочернюю форму в своей родительской форме при ее создании. Объедините это со способностью скрывать кнопку закрытия, указанную в другом сообщении, и у вас должно быть рабочее решение.
Я подозреваю, что FormClosingEventArgs.CloseReason предоставит вам достаточно информации, чтобы определить, следует ли условно отменить Close.
Источник: techarks.ru
Запрет закрытия программы windows 7
Блокировка запуска определенных программ иногда может быть очень полезной. Например, когда вы даете пользоваться своим компьютером или ноутбуком кому-то постороннему, можно заблокировать нежелательный запуск какой-нибудь выбранной вами программы. Или, к примеру, ваша учетная запись «Администратор» и вы хотите запретить использование какого-либо приложения другим пользователям.
Запретить запуск программы в Windows можно (удобнее и проще) с помощью редактора локальной групповой политики. Для тех, у кого на компьютере установлена операционная система Windows в редакции Home, редактор локальной групповой политики по умолчанию не доступен. Запретить запуск определенной программы можно с помощью редактора реестра. В этой статье рассмотрим оба варианта. Запрет запуска программы в редакторе реестра Открываем редактор реестра: Win+R → regedit → «OK». Открываем ветку HKEY_Current_User → SOFTWARE → Microsoft → Windows → CurrentVersion → Policies → Explorer . Справа, нажав правую кнопку мыши, создаем параметр DWORD (32 бита) и называем его DisallowRun . Дважды кликнув по этому параметру, устанавливаем значение 1.
Как запретить запуск программы в Windows 10
Затем правой кнопкой мыши щелкаем по разделу Explorer → Создать → Раздел. Называем его так же, как и предыдущий параметр DisallowRun . Переходим в созданный раздел, а справа, нажав правую кнопку мыши, создаем строковый параметр с названием 1. Дважды кликнув по созданному строковому параметру, в строке «Значение» пишем название исполняемого файла программы, запуск которой мы хотим запретить.Пример: Для запрета запуска еще одной программы, создаем строковый параметр с названием 2 и совершаем все те же действия.Для отмены блокировки, перейдите к созданным параметрам реестра и удалите их.
Запрет запуска программы с помощью редактора локальной групповой политики Запускаем редактор локальной групповой политики (Win+R → gpedit.msc → «OK» или Enter). Открываем: Конфигурация пользователя → Административные шаблоны → Система. Выделяем раздел «Система» и справа находим параметр «Не запускать указанные приложения Windows».
Дважды щелкаем по этому параметру, в открывшемся окне отмечаем пункт «Включено», а в параметрах нажимаем «Показать список запрещенных приложений». Затем указываем название исполняемого файла программы (или нескольких программ). Правильное название исполняемого файла можно посмотреть в папке, где установлена программа. Далее нажимаем «ОК» → «Применить» → «ОК». Теперь при запуске запрещенного приложения будет выводиться следующее сообщение:
Запрет закрытия программы windows 7
Вопрос
Программа должна запускаться в автозапуске. Но появление ее окна при этом нежелательно. Устроят два варианта: 1. Запрет на раскрытие окна при автозапуске (только значок в трее, через еоторый можно впоследствии в нужный момент открыть окно). 2. Либо чтобы закрытие окна крестиком приводило не к закрытию окна, а к его сворачиванию (желательно в трей, не на панель задач).
Если есть решение задачи, то прошу подсказать.
Ответы
Сегодня все работает. И опция «Запускать в свернутом виде» и Ваш батник! Видно комп в пятницу уже устал за неделю. Еще раз спасибо за отзывчивость!
Все ответы
Программа должна запускаться в автозапуске. Но появление ее окна при этом нежелательно. Устроят два варианта:
1. Запрет на раскрытие окна при автозапуске (только значок в трее, через еоторый можно впоследствии в нужный момент открыть окно). 2. Либо чтобы закрытие окна крестиком приводило не к закрытию окна, а к его сворачиванию (желательно в трей, не на панель задач). Если есть решение задачи, то прошу подсказать.
это однако не помешает развернуть его и закрыть. в крайнем случае прибить процесс.
Это приложение для удаленного управления компьютерами Aeroadmin. Использование TeamViewer стало невозможным, т.к. приходится часто работать удаленно с разными компьютерами и NeamViewer счел это коммерческим использованием и ограничил время сеанса до нескольких секунд. Попробовал несколько бесплатных программ и остановился пока на Aeroadmin.
Поставил его в автозапуск на удаленных компах, а он сразу открывает свое окно. Чем смущает неопытных пользователей, которые его просто закрывают крестиком. В результате закрывается полностью процесс Aeroadmin и при необходимости подключиться приходится долго объяснять по телефону как его запустить опять. А по поводу вышеприведенного совета — никак не удается им воспользоваться.
То «Планировщик заданий» сообщает о том, что не найден файл, то Aeroadmin опять запускается с развернутым окном. Продолжаю экспериментировать.
Это приложение для удаленного управления компьютерами Aeroadmin. Использование TeamViewer стало невозможным, т.к. приходится часто работать удаленно с разными компьютерами и NeamViewer счел это коммерческим использованием и ограничил время сеанса до нескольких секунд. Попробовал несколько бесплатных программ и остановился пока на Aeroadmin.
Поставил его в автозапуск на удаленных компах, а он сразу открывает свое окно. Чем смущает неопытных пользователей, которые его просто закрывают крестиком. В результате закрывается полностью процесс Aeroadmin и при необходимости подключиться приходится долго объяснять по телефону как его запустить опять.
А по поводу вышеприведенного совета — никак не удается им воспользоваться. То «Планировщик заданий» сообщает о том, что не найден файл, то Aeroadmin опять запускается с развернутым окном. Продолжаю экспериментировать. Источник
Запрет на завершение программы
Завершение работы программы
Под Windows 7 Pro х64 работает программа контроля сетевых ресурсов локальной сетки, пишет логи. Запуск и завершение программы по расписанию
Здравствуйте. появилась необходимость запуск программы в начале рабочего дня и завершения её в уже. Запрет на завершение процесса.
Добрый день! Иногда с TaskManager можно встретить процесс которого если попробовать завершить то. завершение сессии и запрет возврата (кнопка назад)
Доброго времени суток! Вот в чем проблема, как запретить возвращаться назад с определенной. Лучше поздно, чем никогда Есть такое:
NoClose – Skrommel’s One Hour Software
хотя пишут, что не все окна блочит И такое:
WinLock – Skrommel’s One Hour Software
блочит окно паролем
Но это все скорее на уровне оболочки системы, нежели на уровне администрирования Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. завершение программы
помогите сообразить #include #include #include #include. Завершение программы 1/0
Нужно сделать так чтобы на 1 программа продолжалась, а на 0 завершалась! // Функция.cpp. Завершение программы
Как сделать чтобы после выполнения кода программа не завершала свою работу? program Project1; . БД. Завершение программы
Хочу попробовать для хранения данных программы-бота SQLite. Опыт работы с этой БД уже есть, однако. Завершение программы
Как завершить программу из другой функции(не Main)? Пробовал использовать system(«exit»);, но не.
Источник: onecomp.ru
Как я могу запретить пользователю закрывать мое приложение C#?
Как сделать закрытое приложение в C#? Я хочу отключить кнопку «X» формы и запретить ее закрывать в диспетчере задач Windows.
Я знаю, что один из способов предотвратить закрытие формы — это обработать FormClosing событие, но как мне запретить менеджеру задач закрывать его?
user563929 11 янв ’11 в 08:58 2011-01-11 08:58
2011-01-11 08:58
4 ответа
Нет, запретить диспетчеру задач закрывать ваше приложение невозможно. Диспетчер задач может принудительно завершить процесс, который не отвечает; ему не нужно разрешение приложения, чтобы закрыть его, и это тоже не очень приятно. (См. Этот ответ для получения дополнительной информации о диспетчере задач и сравнении различных способов закрытия приложения.)
Единственный возможный обходной путь — это иметь два процесса, каждый из которых сконфигурирован для обнаружения, когда другой закрыт, и запуска нового экземпляра. Конечно, это все равно не остановит один из процессов, а только позволит вам перезапустить его. И это, вероятно, попадает в категорию враждебного поведения пользователя. Если я прибегнул к использованию диспетчера задач, чтобы закрыть ваше приложение, я бы хотел, чтобы оно исчезло, независимо от того, что вы, как программист, намеревались. И я гарантированно схожу с ума, если он продолжает раскручивать новые процессы (вероятно, сумасшедшим будет и мой антивирусный сканер, потому что он видел такое поведение раньше).
Я рекомендую вам пересмотреть дизайн вашего приложения. Если вам нужно что-то, что все время работает в фоновом режиме, вы должны создать службу Windows. Конечно, сервисы не имеют пользовательского интерфейса, и кажется, что ваше приложение требует его. Еще лучше написать защитный код: сохраните состояние приложения, чтобы оно могло быть закрыто и восстановлено по желанию. Вы должны справиться со случаем, когда компьютер все равно выключается, так как трудно справиться только с выключением вашего приложения?
Как сказал бы Раймонд Чен из Microsoft, в Windows нет механизма для этого, потому что никто не мог представить себе такое прекрасное приложение, как ваше, которое ни один пользователь никогда не захочет закрыть.
Что касается отключения поля закрытия вашей формы, значка закрытия в системном / оконном меню и нажатия клавиш Alt + F4 , это относительно просто. Вам нужно будет переопределить форму CreateParams свойство, и установите CS_NOCLOSE стиль окна класса:
protected override CreateParams CreateParams < get < const int CS_NOCLOSE = 0x200; CreateParams cp = base.CreateParams; cp.ClassStyle |= CS_NOCLOSE; return cp; >>
Скомпилируйте и запустите. Вы получите форму, которая выглядит следующим образом (обратите внимание на отключенную кнопку закрытия на панели заголовков и отсутствие пункта меню «Закрыть» в системном / оконном меню):
Обратите внимание, что при этом вы должны предоставить альтернативный механизм в интерфейсе вашего приложения для закрытия формы. Например, в «основной» форме, из которой отображался этот диалог.
user366904 11 янв ’11 в 09:16 2011-01-11 09:16
2011-01-11 09:16
Вы никогда не должны делать такие вещи, но если вам это действительно нужно, вы должны создать сервис.
user390695 11 янв ’11 в 09:01 2011-01-11 09:01
2011-01-11 09:01
В моей собственной работе MS Outlook запускается как одно из приложений запуска моей рабочей станции, и я оставляю его включенным весь день и в течение нескольких дней, пока я не перезагружу машину. Я также написал приложения для Windows Form, которые информируют меня о состоянии процессов, которые я несу ответственность за мониторинг на некоторых наших серверах. Я написал эти приложения, чтобы они постоянно работали, и проявляют себя как всплывающие окна только тогда, когда обнаруживается что-то, о чем мне нужно знать (они сводятся к панели инструментов, чтобы не мешать им). Я использую SharpReader, чтобы не отставать от своих RSS-каналов, и он, естественно, предназначен для постоянной работы. Он сворачивается в панель инструментов, даже если вы щелкнете по красному значку X, и может быть прекращен только с помощью контекстного меню на панели инструментов или с помощью диспетчера задач — и это вполне разумно, даже ожидаемо, учитывая его функцию!
Разработчики не должны исходить из того, что все приложения добровольно устанавливаются и используются пользователями, которые могут свободно запускать любое программное обеспечение, которое они хотят, и когда они хотят его использовать, или что их собственные предпочтения являются тем, что регулирует отрасль или других пользователей. Именно бизнес-требования определяют поведение приложения, а не предрассудки разработчиков. Как разработчик, работающий в отрасли, я должен был написать множество программ, которые я бы не написал, если бы писал программу для себя.
Пропуск вопроса, потому что вам не нравится то, что пользователь явно указал на дизайн в своем приложении, демонстрирует некоторую мелочность или близость, что не особенно похвально. Поднятый вопрос, чтобы противодействовать этому.
Источник: stackru.com