Как установить службу Windows с помощью QT?

У нас есть существующее приложение C++, которое использует WinAPI (давайте назовем его "SvcApp"). У нас есть другое приложение WinAPI C++ под названием "MgrApp", который устанавливает и запускает "SvcApp" как службу Windows.

Однако мы хотели бы заменить "SvcApp" спокойным приложением. Я могу быть дезинформирован, но кажется, что не возможно использовать <windows.h> из спокойного приложения, таким образом, кажется, что я не могу только скопировать и вставить весь существующий код от "MgrApp"... или могу я?

Подводя итоги, мы должны сделать следование из нашего спокойного приложения:

  • Запустите/остановите сервис окон
  • Установите/удалите сервис окон
5
задан Nick Bolton 29 December 2009 в 18:51
поделиться

3 ответа

Вы определённо можете использовать Windows API (включая windows.h) в Qt Приложениях. За кулисами Qt использует Windows API. Обычный способ обработки кросс-платформенных приложений Qt - использование блоков #ifdef. Qt предоставляет для этой цели макросы типа Q_OS_WIN32 и Q_WS_MAC. Просмотрите исходный код Qt и вы увидите этот метод, используемый повсюду.

EDIT: Вы можете также захотеть изучить использование утилит командной строки для установки/удаления и запуска/остановки служб windows. Таким образом, вы можете просто использовать QProcess для его вызова и не углубляться в WinAPI (что всегда приятно)

.
2
ответ дан 18 December 2019 в 14:47
поделиться

Для этого уже есть решение - QtService.

Документация здесь: http://qt.nokia.com/doc/solutions/4/qtservice/

Скачать здесь: ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtservice-2.6-opensource.zip

10
ответ дан 18 December 2019 в 14:47
поделиться

Я не знаю конкретно о заголовке windows.h, но в общем вы можете включить платформо-специфичный код в любую из ваших программ Qt. Программа просто перестает быть переносимой между платформами. (Обычно было бы лучше отделить специфическую для платформы часть в отдельном файле, но если вся суть программы должна быть оконным сервисом, то...)

1
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: