2009-12-29 162 views
5

我们有一个使用WinAPI的现有C++应用程序(我们称之为“SvcApp”)。我们有另一个名为“MgrApp”的C++ WinAPI应用程序,它将安装并启动“SvcApp”作为Windows服务。如何使用Qt安装Windows服务?

但是,我们想用Qt应用程序替换“SvcApp”。我可能会误解,但似乎不可能从Qt应用程序中使用<windows.h>,所以似乎我不能复制和粘贴来自“MgrApp”的所有现有代码......或者我可以吗?

总之,我们需要从我们的Qt应用程序执行以下操作:

  • 启动/停止Windows服务
  • 安装/卸载Windows服务

回答

2

您绝对可以使用Windows Qt应用程序中的API(包括windows.h)。幕后Qt使用Windows API。处理跨平台Qt应用程序的正常方式是使用#ifdef块。 Qt为此提供了像Q_OS_WIN32和Q_WS_MAC这样的宏。看看Qt源代码,你会看到这个方法遍布整个地方。

编辑:你可能也想看看使用命令行工具来安装/卸载和启动/停止Windows服务。这样你就可以使用QProcess来调用它,而不必深入研究WinAPI(它总是很好)。

1

我不知道特别是关于windows.h头文件,但通常你可以在你的任何Qt程序中包含特定于平台的代码。该程序仅仅停止跨平台移植。 (将平台特定的部分分开放置在单独的文件中通常会更好,但如果程序的全部要点是Windows服务,那么...)

10
+0

谢谢,很好的了解这个 – JimDaniel 2010-01-05 01:35:50

+0

@MihaiLimbăşan你知道牌照是什么? – sara 2012-07-15 08:19:22

+0

@sara最后一个版本也是[在Gitorious](http://qt.gitorious.org/qt-solutions/qt-solutions/trees/master/qtservice)。它是LGPL(来源)和[也BSD](http://qt.nokia.com/products/qt-addons/solutions-archive/)。 – tricasse 2012-09-17 17:29:55