我们有一个使用WinAPI的现有C ++应用程序(我们称之为“SvcApp”)。我们有另一个名为“MgrApp”的C ++ WinAPI应用程序,它安装并启动“SvcApp”作为Windows服务。
但是,我们想用Qt应用程序替换“SvcApp”。我可能会被误导,但似乎无法使用Qt应用程序中的<windows.h>
,所以我似乎无法复制并粘贴“MgrApp”中的所有现有代码...或者我可以?
总而言之,我们需要从Qt应用程序中执行以下操作:
答案 0 :(得分:10)
已经有了解决方案 - QtService
。
此处的文档:http://qt.nokia.com/doc/solutions/4/qtservice/
在此处下载:ftp://ftp.qt.nokia.com/qt/solutions/lgpl/qtservice-2.6-opensource.zip
答案 1 :(得分:2)
您绝对可以在Qt应用程序中使用Windows API(包括windows.h)。在幕后,Qt使用Windows API。处理跨平台Qt应用程序的正常方法是使用#ifdef块。为此,Qt提供了Q_OS_WIN32和Q_WS_MAC等宏。查看Qt源代码,您将看到此方法在整个地方使用。
编辑:您可能还希望使用命令行实用程序来安装/卸载和启动/停止Windows服务。这样你就可以使用QProcess来调用它,而不必深入研究WinAPI(这总是很好)
答案 2 :(得分:1)
我不是特别了解windows.h标头,但一般来说,您可以在任何Qt程序中包含特定于平台的代码。该程序仅停止跨平台移植。 (将平台特定部分设置在一个单独的文件中通常是一个更好的主意,但如果程序的整个要点是一个Windows服务,那么......)