我正在使用C++中的服務控制器來管理Windows服務。等待服務啓動/停止
我可以使用StartService()
和ControlService()
函數來啓動和停止服務。
但是,有沒有一種標準的方式來等待服務實際啓動和停止?
我明顯可以循環調用QueryServiceStatusEx()
並分別等待狀態爲Running
或Stopped
。
是否有一個完美的方式來實現相同?
謝謝。
我正在使用C++中的服務控制器來管理Windows服務。等待服務啓動/停止
我可以使用StartService()
和ControlService()
函數來啓動和停止服務。
但是,有沒有一種標準的方式來等待服務實際啓動和停止?
我明顯可以循環調用QueryServiceStatusEx()
並分別等待狀態爲Running
或Stopped
。
是否有一個完美的方式來實現相同?
謝謝。
Afaik服務啓動和停止創建窗口事件日誌事件。也許你可以爲這些人安裝一個處理程序,並等待來自應用程序的事件。如果你的應用程序也是一個服務標記它取決於第三方服務,那麼你不應該等待它。
在C#中,您可以使用ServiceController.WaitForStatus來做到這一點。你可以這樣做(一行代碼)並將C#包裝在你的C++代碼中。
否則,您可能會使用WMI(Win32_Service class)或事件日誌。
您是否可以控制其他服務? – RedX 2011-06-09 13:15:00
是的,我可以開始服務並停止它。但是我需要一種方法來等待服務停止,這樣我才能在再次啓動之前編輯配置文件。 – Nick 2011-06-09 13:16:18
我的意思是你有權訪問它的源代碼。如果是這種情況,你可以創建一個事件並等待。 – RedX 2011-06-09 13:17:36