Как сделать программу не закрываемой

Как сделать закрытое приложение на С#? Я хочу отключить кнопку «X» формы и не позволять Windows Task Manager также закрывать ее. Я знаю, что один из способов предотвратить закрытие формы — обработать событие FormClosing , но как я могу препятствовать тому, чтобы диспетчер задач закрыл его?

Thiru G 11 янв. 2011, в 10:35
Поделиться

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

Adam Houldsworth 11 янв. 2011, в 09:01
CodesInChaos 22 март 2011, в 11:46
CodesInChaos 22 март 2011, в 11:49
Adam Houldsworth 22 март 2011, в 11:51
CodesInChaos 22 март 2011, в 11:53
Adam Houldsworth 22 март 2011, в 11:54
Cyberherbalist 19 дек. 2011, в 17:44

Показать ещё 5 комментариев
Поделиться:

4 ответа

Лучший ответ

Как сделать фейковую ошибку (ЛЕГКО!) презалив

Нет, это не позволяет предотвратить закрытие приложения Task Manager. Диспетчер задач может принудительно прекратить процесс, который не отвечает; ему не нужно разрешение на приложение, чтобы закрыть его, и оно тоже не попросит. (См. этот ответ для получения дополнительной информации о диспетчере задач и сравнение между различными способами закрытия приложения.)

Единственное возможное обходное решение — иметь два процесса, каждый из которых настроен для обнаружения, когда другой закрыт, и запускает новый экземпляр. Конечно, это все равно не остановит один из процессов от его убийства, он просто позволит вам перезапустить его. И это, вероятно, относится к категории агрессивного поведения пользователей. Если я прибег к использованию диспетчера задач, чтобы закрыть приложение, я, вероятно, хочу, чтобы он исчез, независимо от того, что вы, как программист. И я гарантирую быть безумным, если он будет продолжать разворачивать новые процессы (также, вероятно, будет сумасшедшим, это мой антивирус, потому что раньше он видел подобное поведение).

Я рекомендую вам пересмотреть свой дизайн приложения. Если вам нужно что-то, что работает все время в фоновом режиме, вы должны создать службу Windows. Конечно, у служб нет пользовательского интерфейса, и, похоже, ваше приложение требует его. Так что еще лучше, напишите свой код в обороне: сохраните состояние приложения, чтобы его можно было закрыть и восстановить по желанию. Вы должны обрабатывать случай, когда компьютер все равно отключается, так как трудно справиться с тем, что приложение закрыто?

Как Microsoft Raymond Чен скажет вам, Windows не имеет механизма для этого, потому что никто не мог представить себе приложение столь же удивительным, как ваш, которого никто не захочет закрывать.

Что касается отключения окна закрытия формы, значка закрытия в меню системы/окна и нажатия клавиши Alt + F4 , это относительно просто. Вам необходимо переопределить форму CreateParams свойство и установить CS_NOCLOSE стиль класса окна:

Как скрыть работающие программы в Windows


protected override CreateParams CreateParams < get < const int CS_NOCLOSE = 0x200; CreateParams cp = base.CreateParams; cp.ClassStyle |= CS_NOCLOSE; return cp; >>

Скомпилируйте и запустите. Вы получите форму, которая выглядит так (обратите внимание на закрытую кнопку закрытия на панели заголовка и отсутствие пункта меню «Закрыть» в меню системы/окна):

Изображение 457452

Обратите внимание, что при выполнении этого вы должны действительно предоставить альтернативный механизм в вашем интерфейсе приложения, чтобы закрыть форму. Например, в форме «master», из которой был отображен этот диалог.

Cody Gray 11 янв. 2011, в 10:25
Поделиться
спасибо, что поделились этим .
Thiru G 11 янв. 2011, в 09:33
Cody Gray♦ 11 янв.

2011, в 09:34

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

CodesInChaos 22 март 2011, в 11:48
Derek 28 март 2014, в 14:29
Показать ещё 2 комментария

Вы никогда не должны делать такие вещи, но если вам это действительно нужно, вы должны создать сервис.

Damian Leszczyński — Vash 11 янв. 2011, в 09:30
Поделиться

Этот ответ бесполезен. Служба Windows может быть убита через диспетчер задач, как и все остальное. Мнение о том, что этого никогда не следует делать, также бесполезно — в некоторых ситуациях, таких как антивирус или приложение для мониторинга на общих компьютерах, такая установка необходима. Утверждение, что это никогда не должно быть сделано, неверно.

Derek 28 март 2014, в 14:35

Вы можете управлять сервисом, который пользователь не сможет остановить. Вы можете сделать это и с процессом, но обслуживание более подходящее, ИМХО. Относительно этого бесполезного мнения. Приложение не должно управлять тем, как оно выполняется. Это роль для системного администратора.

Damian Leszczyński — Vash 30 март 2014, в 20:16

«Вы можете управлять сервисом, чтобы пользователь не смог его остановить». Как? Если есть какой-то волшебный способ предотвратить завершение процесса службы пользователем, который может получить доступ к диспетчеру задач, я весь в ушах. Что касается вашего мнения об управлении приложениями, опять же, вы не имеете смысла. Похоже, вы предполагаете, что он не является системным администратором, и вы также не предоставляете никакой информации о том, как он может выполнить задачу, о которой он спрашивал.

Читайте также:
DEXP rage программа для настройки

Derek 31 март 2014, в 00:20

Вы правы, что это не лучший ответ в мире, поскольку он не дает решения, но, ИМХО, подход недействителен, поэтому это может быть своего рода помощью. Если вы думаете о пользователе как SysAdm, там нам нечего обсуждать, хороший SA не одобрит любое программное обеспечение, которым он не может управлять. В случае системных пользователей SA создает групповую политику, которая определяет, может ли пользователь закрывать или закрывать такое приложение. Это ключевое различие в компетенции имеет решающее значение.

Damian Leszczyński — Vash 31 март 2014, в 08:30

Почему это важно? Потому что даже если разработчик сможет отлавливать все закрывающие сигналы и мешать им действовать для текущей версии системы. В следующей версии система может предложить новое решение для закрытия приложения. Затем разработчик должен также переписать свое приложение.

Вот почему аспект управления приложением в системе — это администрирование, а не разработка. Хук завершения работы действителен, когда мы хотим сообщить и вновь заверить, что он действительно хочет остановить приложение, но в конце дня решение всегда остается за ним.

Damian Leszczyński — Vash 31 март 2014, в 08:35
Показать ещё 3 комментария

В моей собственной работе MS Outlook запускается в качестве одного из моих загрузочных приложений для рабочей станции, и я оставляю его работать весь день и за несколько дней до перезагрузки компьютера. Я также написал приложения Windows Form, которые информируют меня о состоянии процессов, на которые я отвечаю, для мониторинга на некоторых наших серверах. Я написал эти приложения, чтобы они постоянно работали и отображались только как всплывающие окна, когда что-то обнаруживалось, о чем мне нужно знать (они сводят к минимуму панель инструментов, чтобы удержать их в сторону). Я использую SharpReader за то, что не отставал от своих RSS-каналов, и он, естественно, предназначен для постоянного запуска. Он минимизирует панель инструментов, даже если вы нажмете на красный X, и ее можно прекратить только контекстным меню на панели инструментов или с помощью диспетчера задач — и это вполне разумно, даже если ожидается, с учетом его функции!

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

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

Cyberherbalist 19 дек. 2011, в 18:42
Поделиться

В этих сценариях существуют альтернативные механизмы для предотвращения закрытия приложения, которые функционируют вне вашего приложения. Например, вы можете установить приложение для замены Explorer в качестве оболочки по умолчанию. Или вы можете настроить групповые политики, чтобы запретить пользователю без соответствующих прав закрывать приложение. Ничто из этого не может или не должно быть сделано из кода приложения.

Cody Gray♦ 03 авг. 2013, в 14:34

Этот ответ не соответствует тому, что говорят люди. Дело не просто в том, что «это требование плохо, потому что оно оскорбляет мою чувствительность», а в том, что «это требование плохо, потому что оно невозможно, и оно разработано, чтобы быть невозможным, потому что в операционной системе есть другой механизм для достижения того, чего вы хотите». В данном случае это групповая политика, как говорит Коди Грей.

Ben Aaronson 02 май 2014, в 01:40
Cyberherbalist 02 май 2014, в 15:48
Ben Aaronson 02 май 2014, в 16:19
Cyberherbalist 02 май 2014, в 16:28
Ben Aaronson 02 май 2014, в 16:32

Показать ещё 4 комментария

Не сложно защитить процесс от убийства обычных пользователей. Приложение может модифицировать собственный ACL-процесс, запрещающий ЛЮБОЙ диспетчер задач, чтобы его убить. Они просто получат «Доступ запрещен!» при попытке убить процесс.

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

Я мог бы предоставить вам код, если он еще не нужен.

user3309490 01 окт. 2015, в 15:17
Поделиться

Ещё вопросы

Источник: overcoder.net

Как сделать так чтоб не закрывалась программа / С#

У меня есть консольная программа на C#(калькулятор), после того как выдает результат она закрывается. Как сделать так чтоб завершении она не закрывалась а снова просила ввести что нибудь?

Отслеживать
задан 3 ноя 2020 в 17:46
Руслан Исаев Руслан Исаев
105 1 1 серебряный знак 6 6 бронзовых знаков
3 ноя 2020 в 17:48
Покажите ваш код
3 ноя 2020 в 17:51

Код посмотреть бы. А так просить вводить можно с помощью Console.Write();
3 ноя 2020 в 17:53

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

while (true) < // your existing code Console.WriteLine(«Do another? (y — for Yes)»); if (Console.ReadLine() != «y») break; >
Отслеживать
ответ дан 3 ноя 2020 в 17:49
user176262 user176262

Лучше всё-таки спрашивать «хотите посчитать что-нибудь ещё?» с возможностью выхода из цикла при отрицательном ответе.

Читайте также:
Оккультная символика в космических программах то что скрывают о космосе

3 ноя 2020 в 19:17

    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Как сделать чтобы приложение не закрывалось на пк

В ряде случаев даже самые «стабильные» и надежные программы могут перестать отзываться на какие-либо нажатия мышки/клавиатуры (т.е. попросту зависнуть).

Для решения вопроса, можно, конечно, перезагрузить ПК/ноутбук — но далеко не всегда это удобно (часть данных в др. ПО будет сброшена и не сохранится. ) .

Логично, что лучше всего закрыть только эту конкретно-зависшую программу. Всем известное сочетание ALT+F4 — далеко не всегда решает проблему, и, собственно, поэтому набросал небольшую заметку с несколькими способами принудительной ликвидации процесса.

Если ПК/ноутбук вообще не реагирует ни на одну из кнопок клавиатуры — то скорее всего зависла не только отдельно-взятая программа, но и в целом система.

Если так, то для перезагрузки/выключения устройства — зажмите кнопку питания (Power) на 4-5 сек. (разумеется, все несохраненные данные будут утеряны) .

Способы закрыть не отвечающую программу

Итак, самый очевидный и простой вариант — просто кликнуть правой кнопкой мышки по значку зависшей программы на панели задач Windows. После, во всплывшем окне достаточно будет выбрать вариант «закрыть окно» .

Закрыть окно

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

  • WIN , или WIN+TAB , или ALT+TAB , или ALT+Enter — чтобы свернуть окно;
  • ALT+F4 , или ESC , или ALT+Q — для закрытия (выхода) из программы.

ALT+Q / клавиатура

Перечисленные «горячие» сочетания клавиш работают с подавляющем большинством ПО для Windows.

Нажмите сочетание клавиш Ctrl+Shift+Esc (или Ctrl+Alt+Del) для вызова диспетчер задач. Далее во вкладке процессы найдите зависшую программу (процесс), кликните по ней правой кнопкой мыши и в появившемся выберите «Снять задачу» . Через 3-5 сек. программа должна быть закрыта.

Ctrl+Shift+Esc или Ctrl+Alt+Del — открыть диспетчер задач

Ctrl+Shift+Esc или Ctrl+Alt+Del — открыть диспетчер задач

Кстати, если рабочий стол после этого стал отображаться «как-то не так» (или вообще не видно) — перезапустите процесс «Проводник» (или «Explorer» на англ.).

Примечание: также проводник можно перезапустить из командной строки, введя taskkill /F /IM explorer.exe слепую» (когда на экране ничего не отображается).

Как это делается:

Убиваем процесс через командную строку

Убиваем процесс через командную строку

Если вышеприведенные варианты не увенчались успехом, можно прибегнуть к утилите Process Hacker (ссылка на SourceForge). Это бесплатное ПО, которое покажет вам все запущенные процессы, их приоритеты, занимаемую память, нагрузку и пр.

Process Hacker 2 — закрыть дерево процессов

Process Hacker 2 — закрыть дерево процессов

Стоит отметить, что Process Hacker закроет сразу всё дерево процессов, связанных с этой программой (чего не делают многие др. программы. ).

Если у вас часто начала зависать какая-либо программа (еще хуже программы) — обратите внимание на:

  1. версию ПО (нежелательно использовать различные бета-версии). Проверьте, совместима ли версия ПО с вашей ОС (в помощь: какая версия Windows установлена на моем компьютере); (желательно с офиц. сайта); (если он начал «сыпаться» — подвисания будут идти постоянно);
  2. прогоните систему с помощью спец. «одноразовых» антивирусных продуктов;
  3. возможно, вашему приложению не хватает ОЗУ (посмотрите при работе ПО — сколько памяти занято в диспетчере задач).

Кроме этого, рекомендую ознакомиться с тематическими инструкциями (ссылки ниже).

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

Как же все — таки можно завершить зависшую программу?

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

Такие программы, при своем зависании, могут также вызвать и полное зависание всей операционной системы Windows. В таких случаях потребуется полная перезагрузка компьютера. Однако, перед тем, как нажать кнопку Reset, находящуюся на передней части системного блока (её предназначение – это принудительная перезагрузка компьютера), вполне можно предпринять еще некоторые действия.

Остановимся чуть подробнее на нескольких способах, которые помогут вам завершить зависший процесс, в тех случаях, когда программа перестает отвечать.

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

Именно поэтому следует немного подождать, для того, чтобы полностью убедиться в том, что приложение, на самом деле, не хочет отвечать. Точно также, используя комбинацию клавиш Alt+Tab, можно попробовать переключиться на любое другое, уже открытое приложение.

В тех случаях, если программа продолжает оставаться зависшей, можно воспользоваться Диспетчером задач, вызывается который следующим сочетанием клавиш:

  • Windows XP – это Ctrl+Alt+Del;
  • Windows 7 и 10 – следующее сочетание Ctrl+Shift+Esc.

После чего выбираем вкладку – «Процессы» – после чего, в списке уже запущенных приложений находим программу, которая зависла. При этом, для большей уверенности, следует обратить особое внимание на столбец – «Состояние».

Читайте также:
Signal мессенджер как пользоваться программой

Снять задачу с программы, которая у вас зависла, можно кликом мышки, выделяя задачу и нажимаем кнопку – «Снять задачу», см. скриншот.

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

Как запретить выход из программы

  • Как запретить выход из программы
  • Как отключить доступ программы в интернет
  • Как запретить запускать программы
  • Персональный компьютер, программа AnVir Task Manage

Например, если вам надо, чтобы электронная почта Outlook была постоянно включена, надо просто поставить «Автозапуск». Как только компьютер включится, программа начнет работу. Можете сделать следующее. Зайдите в «Пуск», а потом нажмите на «Выполнить». Там, где написано «Открыть», вставьте «gpedit.msc».

Нажмите потом «Ок».

Чтобы программы не выключались, нужно добавить их в «Автозагрузки». Для этого зайдите в «Пуск». Выберите «Все программы» и нажмите на «Стандартные». Щелкните мышкой по «Выполнить». Введите в строке без кавычек «msconfig».

Далее щелкните на «Ок». Должно открыться окно под названием «Настройка системы». Там перейдите в «Автозагрузка». Для работы с этим разделом лучше воспользоваться дополнительной программой AnVir Task Manage. Она позволяет пользователям редактировать раздел «Автозагрузка», то есть добавлять или удалять элементы.

Установите AnVir Task Manage себе на компьютер. В окне программы вы увидите, что напротив каждых разделов есть галочки.

Можете их настроить на свое усмотрение. Каждый раз нажимайте кнопку «Далее», чтобы перейти к следующему окну настроек. В левой части вы увидите раздел «Автозагрузка». Если вы хотите добавить какую-то программу в данный раздел, просто нажмите на значок «плюс» зеленого цвета. Он расположен верхней части AnVir Task Manage. Откроется дополнительное окно.

Для выбора программы нажмите кнопку «Обзор». Снова откроется перед вами окно, где найдите нужное вам название. Щелкните мышкой по имени и нажмите «Открыть». Нажмите потом «Ок». Теперь автозагрузка программы включена.

Каждый раз при включении компьютера она будет включаться. Выход тоже будет осуществляться только после выключения компьютера.

Несомненно, вы уже столкнулись с проблемой, когда компьютер сразу же после загрузки начал тормозить: медленно выполнять запросы, демонстрировать вращающийся синий кружочек на месте курсора, запаздывать с воспроизведением звука и т. п. Наверное, у вас возникло ощущение, будто бы ПК занят чем-то посторонним, хотя вы не загружали его массой заданий. И вы окажетесь правы – некоторые программы ещё на стадии установки требуют разрешить им запускаться в фоновом режиме. К чему это приводит и как бороться с данным явлением, мы расскажем далее.

Как отключить фоновые программы в Windows

Что такое фоновые приложения

Когда вы включаете компьютер, вместе с системой запускаются другие программы и нагружают «Диспетчер задач» своими процессами – вот, что такое те самые фоновые приложения. Оттого, что ПК получает сразу несколько команд, он начинает замедляться и распределять очередность выполнения в приоритетном порядке, поэтому вы можете долго ждать реакции на свой запрос. Как мы уже упоминали, при установке или первом запуске некоторые приложения просят разрешения активизироваться вместе с ОС, либо просто уведомляют об этом пользователя.

Фоновые приложения

Чаще всего так поступают следующие программы:

Если после загрузки системы открывается окно какой-то программы, например, Skype, значит, приложение работает в фоновом режиме. Некоторые утилиты могут автоматически запускаться и функционировать, не афишируя своей деятельности, но в «Диспетчере задач» это отображается. Конечно, много фоновых процессов, запущенных практически разом, приводят к перегрузке ОЗУ и ЦП и зависанию системы.

Способы выявления фоновых программ

Давайте разберемся, как найти и просмотреть список фоновых приложений в системах Windows 10 и 7. Начнём с «десятки»:

Теперь находим то же самое в «семёрке»:

Приложения с функцией автозапуска

Также перечень запустившихся приложений можно увидеть на панели задач, справа. Разверните значки, спрятанные под стрелочкой, указывающей вверх. Разумеется, таким путем можно найти только корректные и безвредные программы – остальные прячутся в «Диспетчере задач». Для его вызова нажмите Ctrl+Alt+Del, перейдите в закладку «Автозагрузка».

Как отключить работу ненужных приложений

Из предыдущей главы вы уже знаете, как отключить фоновые программы в ОС Windows 7 и как отключить фоновые процессы в ОС Windows 10, если они честно заявляют о своей деятельности. Теперь рассмотрим более сложный вариант, когда ПО скрыто, но запускается с системой и поглощает ресурсы. Итак, снова откройте «Автозагрузку» в Task manager, выделите название ПО или процесса, кликните по нему ПКМ и удалите через соответствующую опцию.

Отключение автозагрузки

И теперь самый сложный вариант для рекламного ПО, которое никоим образом не желает подчиняться командам и упорно запускается вместе с системой, а антивирус при этом сообщает, что программа абсолютно безвредна. Такие приложения лучше удалить с ПК полностью, но вначале их нужно исключить из фонового запуска, чтобы компьютер не зависал. В данном случае мы действуем через реестр – будьте внимательны, чтобы не повредить важные записи.

Редактор реестра

  1. Нажмите Win+R и в появившемся окне наберите команду «regedit» (без кавычек).
  2. В реестре найдите слева папку HKEY_CURRENT_USER и последовательно откройте: SOFTWARE/ Microsoft/Windows/CurrentVersion/ Run.
  3. Теперь вы видите список программ в автозапуске – нажмите правой кнопкой мыши, чтобы удалить.
  4. Перезапустите компьютер.

Отключенные фоновые приложения больше не будут запускаться вместе с системой – этот метод справедлив как для Windows 10, так и для 7 в любой сборке.

Как закрыть фоновые процессы Windows

Если вы не хотите отключать автозапуск приложения насовсем, но фоновую работу приложения нужно временно убрать, то смотрим, как закрыть текущую службу:

Источник: telefony-gid.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru