2010-08-23 65 views
0

我有一個窗口服務程序,我需要從它啓動另一個可執行文件,但非函數在SvcMain中執行。我尋找的解決方案,但發現有人寫道,初始化應該完成不到一秒鐘,否則它不會執行,所以是我的createprocess 他們說這個工作失敗,你需要設置SetServiceStatusservice_start_pending,但我不能找到任何文件來說明它。我怎樣才能做到這一點?我怎麼能從服務執行

+0

如果這是用於Windows,並且它似乎如此,請標記爲這樣。 – 2010-08-23 14:25:25

回答

0

嘗試從SvcMain運行輔助線程,並讓該線程完成啓動外部可執行文件的工作。

+0

我是否需要每次從輔助線程報告狀態? – user428447 2010-08-23 13:36:49

+0

也許我誤解了你的需求。您可以在原始問題中更詳細地描述它們,以便人們瞭解您正在嘗試做什麼。 – joekoyote 2010-08-23 14:04:00

0

基本上,它聽起來很簡單。在致電CreateProcess之前,請創建SERVICE_STATUS對象,將SERVICE_STATUS.dwCurrentState設置爲SERVICE_START_PENDING,然後致電SetServiceStatus(handle_to_your_service, &the_service_status);

SERVICE_STATUS對象設爲全局對象可能是最容易的。您將不止一次致電SetServiceStatus,並且大部分成員會隨着時間的推移保持不變。例如。 .dwServiceType根本不應該改變,並且.dwControlsAccepted通常不會。