ezini Ответов: 2

Способы запуска приложения в backgroud после того, как пользователь закрыл консольное приложение, C++


Я не могу найти хороший способ заставить мое приложение работать в фоновом режиме после того, как пользователь закрыл его (с помощью кнопки X или из Панели приложений), способ сохранить процесс живым в C++.

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

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

2 Ответов

Рейтинг:
2

Daniel Pfeffer

Windows не предоставляет простого способа захвата сообщений, отправленных в окно консоли. Если вам нужно, чтобы приложение работало в фоновом режиме, вы можете:

1. Создайте сервис (для его установки / запуска / остановки требуются права администратора). Ваша консольная программа может взаимодействовать со службой различными способами.
2. Создайте приложение Windows, которое работает со свернутым окном. Ваша консольная программа может запускать приложение Windows и взаимодействовать с его окном с помощью стандартных сообщений Windows. Программа Windows продолжит выполнение после завершения работы консольной программы.


Рейтинг:
0

OriginalGriff

Процессы и потоки - это разные вещи: процесс-это блок памяти, объединенный с одним или несколькими потоками, а приложение-это часть процесса-это в основном поток.
Когда ваше приложение закрывается нормально, выполняемый поток завершается, как и все запущенные им потоки, помеченные как "фоновые". Не фоновый поток этого не делает, и процесс только закрывается, а память перерабатывается, когда все его потоки закрыты.
Если приложение будет закрыто ненормально, то процесс умрет вместе с ним.

Это оставляет вам два варианта: запустить не фоновый поток в вашем приложении, прежде чем вернуться из него. main или (лучше) запустите другой процесс из вашего приложения и позвольте ему работать так , как он будет работать.