• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как Перехватить Закрытие Windows-приложения Без Формы?

  • Автор темы Tolias
  • Дата начала
T

Tolias

Я на C# создал приложение, выбрав проект WindowsForms. Но так как моя программа не должна иметь никаких окон, я удалил Form1.cs, а код своей программы поместил в функции Main() типа так:
<!--shcode--><pre><code class='c#'>static void Main()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "C:\\";
watcher.NotifyFilter = NotifyFilters.LastAccess;
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);

Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}[/CODE]
после Мейна идут фукнции-обработчики событий, который пишут все в текстовый файл.
Мне надо так сделать, чтобы при выключении компьютера, когда система посылает всем программам команду закрыться, чтобы в этот момент моя программа перед своим закрытием сбрасывала содержимое всех буферов файлового потока в файл (то есть, выполнялась функция Flush()), а то сейчас получается неприятная ситуация, что мое приложение виндой убивается, и все данные, что должны были записаться в файл, но остались в буфере файлового потока, так и пропадают, не записавшись в файл.

Как перехватить закрытие приложения?

P.S. Как перехвачивать закрытие приложения с формой, я знаю. Но просто в моем приложении нет формы...
 
L

LuMee

Возможно, найдется что-то полезное.
 
T

Tolias

Возможно, найдется что-то полезное.
Первый пример с использованием AppDomain.CurrentDomain.ProcessExit у меня не работает. Это событие не происходит при закрытии приложения.

А примеры ниже для консольных приложений..
 
L

LuMee

Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
 
T

Tolias

Если у вас приложение без форм, может, есть смысл как раз сделать его консольным?
А разве можно сделать консольное приложение скрытым, чтобы при запуске не было консольного окна, и единственное место, где можно было увидеть это приложение, это в списке процессов Диспетчера задач Windows?
 
M

-master-

У Application есть ApplicationExit иент, не подойдет?

А ваще подумайте переделать это как вин-сервис, на сколько я понял задачу.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!