如何使用Qt安装Windows服务?
我们有一个使用WinAPI的现有C++应用程序(我们称之为“SvcApp”)。我们有另一个名为“MgrApp”的C++ WinAPI应用程序,它将安装并启动“SvcApp”作为Windows服务。如何使用Qt安装Windows服务?
但是,我们想用Qt应用程序替换“SvcApp”。我可能会误解,但似乎不可能从Qt应用程序中使用<windows.h>
,所以似乎我不能复制和粘贴来自“MgrApp”的所有现有代码......或者我可以吗?
总之,我们需要从我们的Qt应用程序执行以下操作:
- 启动/停止Windows服务
- 安装/卸载Windows服务
您绝对可以使用Windows Qt应用程序中的API(包括windows.h)。幕后Qt使用Windows API。处理跨平台Qt应用程序的正常方式是使用#ifdef块。 Qt为此提供了像Q_OS_WIN32和Q_WS_MAC这样的宏。看看Qt源代码,你会看到这个方法遍布整个地方。
编辑:你可能也想看看使用命令行工具来安装/卸载和启动/停止Windows服务。这样你就可以使用QProcess来调用它,而不必深入研究WinAPI(它总是很好)。
我不知道特别是关于windows.h头文件,但通常你可以在你的任何Qt程序中包含特定于平台的代码。该程序仅仅停止跨平台移植。 (将平台特定的部分分开放置在单独的文件中通常会更好,但如果程序的全部要点是Windows服务,那么...)
已经有一个解决方案 - QtService
。
文档浏览:http://qt.nokia.com/doc/solutions/4/qtservice/
这里下载:ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtservice-2.6-opensource.zip
谢谢,很好的了解这个 – JimDaniel 2010-01-05 01:35:50
@MihaiLimbăşan你知道牌照是什么? – sara 2012-07-15 08:19:22
@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