2010-08-23 61 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通常不会。