Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
1

Сделать самоудаление программы при завершении, но не через this.FormClosed

13.11.2013, 11:32. Просмотров 1863. Ответов 4
Метки нет (Все метки)


Добрый день!

Нужно в программу добавить проверку некоего события. Если событие случилось, то закрыть программу принудительно и удалить exe-файл.

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

Вопрос в следующем. Можно ли все это прописать в одном классе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2013, 11:32
Ответы с готовыми решениями:

Как сделать, чтобы при завершении программы через диспетчер зaдaч она успевала сохранить данные?
Всем доброго времени суток Навешиваю на программу защиту от действий хитрых юзеров Столкнулся с...

Ошибка при завершении программы.
Писал программку к этой теме https://www.cyberforum.ru/lazarus/thread2596740.html Вроде все...

Ошибка при завершении программы
Добрый вечер! Помогите плиз, у меня после завершения программы она зависает... Методом тыка)...

ошибка при завершении программы
возникает ошибка при завершении программы. при чем после вывода на экран последней строчки. с чем...

4
306 / 304 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
13.11.2013, 11:37 2
Событие FormClosing Вам поможет в решении данного вопроса. У параметра FormClosingEventArgs есть свойство Cancel.
Хотя, может, я чего-то не понимаю, но что Вам мешает проверять эти самые "определенные обстоятельства" в FormClosed?
0
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
13.11.2013, 11:46  [ТС] 3
но что Вам мешает проверять эти самые "определенные обстоятельства" в FormClosed?

Да, я сейчас так и делаю. Но можно ли все эти проверки и самоудаление при выходе вынести в отдельный класс? Чтобы этот класс можно было просто скопировать в другие программы, а не прописывать там везде события FormClosed, соответствующие проверки и события?
0
306 / 304 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
13.11.2013, 11:50 4
Ну да, сделайте класс-наследник от Form, пропишите в них соответствующие события и методы и наследуйте главные формы приложения от него, разве нет?
0
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
13.11.2013, 13:15  [ТС] 5
Подскажите, как

Добавлено через 1 час 9 минут
Короче, написал просто вот так:

C#
1
2
3
4
5
public void selfDelete()
        {
            Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del " + Application.ExecutablePath);
            Application.Exit();
        }
Вроде, работает. Только нужно еще сделать, чтобы процесс запускался в невидимом режиме.

Добавлено через 9 минут
Исправил код на следующий:

C#
1
2
3
4
5
6
7
8
9
            ProcessStartInfo Info = new ProcessStartInfo();
            Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " +
                           Application.ExecutablePath;
            Info.WindowStyle = ProcessWindowStyle.Hidden;
            Info.CreateNoWindow = true;
            Info.FileName = "cmd.exe";
            Process.Start(Info);
 
            System.Diagnostics.Process.GetCurrentProcess().Kill();
плюсы:
окно cmd появляется в невидимом режиме. Программа закрывается в любом случае через GetCurrentProcess().Kill(). Если же закрывать через Application.Exit(), то программа могла и не выключиться в некоторых ситуациях.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2013, 13:15

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

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

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

Исключение RaceOnRCWCleanup при завершении программы
Всем привет. Делаю диспетчер задач и решил прикрутить уровень загрузки процессора и оперативной...

Возврат значения из программы при завершении
Напишите метод, который будет возвращать true, если программа закончит выполнение удачно, или false...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.