Итак, вам понадобится win32API и функция, описанная здесь . Вы можете использовать эту функцию, чтобы добавить так называемый метод обработчика элементов управления, который будет запускаться всякий раз, когда программа закрывается или завершается по любой причине, включая завершение работы. Вы можете найти список различных кодов, которые могут быть переданы обработчику, и их значения здесь . В идеале у вас должен быть метод-обработчик, который просто отключает сервер, ждет его завершения sh выключения, а затем возвращается.
У меня нет личного опыта работы с библиотекой, но он должно быть довольно простым.
РЕДАКТИРОВАТЬ: как отметил @ErykSun, вам нужно будет создать скрытое окно, чтобы получать события. Честно говоря, я не знаю, как создать это скрытое окно. В некоторой документации предполагается, что запуск вашего приложения как службы также может работать. Я изучу это подробнее, если у меня будет время.