2009-12-29 163 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