как я могу выполнить из службы - PullRequest
0 голосов
/ 23 августа 2010

У меня есть программа для работы с окнами, и мне нужно запустить из нее другой исполняемый файл, но ни одна из функций не выполняется в SvcMain. Я искал решение, но нашел где-то написанное, что инициализация должна быть завершена менее чем за одну секунду, иначе она не будет выполнена, поэтому произошел сбой моего createprocess говорят, чтобы это работало, нужно установить SetServiceStatus на service_start_pending, но я не могу найти ни одного документа, чтобы проиллюстрировать это. как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

По сути, это так просто, как кажется. Перед вызовом CreateProcess создайте объект SERVICE_STATUS, установите для SERVICE_STATUS.dwCurrentState значение SERVICE_START_PENDING и вызовите SetServiceStatus(handle_to_your_service, &the_service_status);.

Вероятно, проще всего сделать объект SERVICE_STATUS глобальным. Вы будете звонить SetServiceStatus более одного раза, и большинство участников останутся постоянными с течением времени. Например. .dwServiceType не должен меняться вообще, а .dwControlsAccepted обычно не меняется.

0 голосов
/ 23 августа 2010

Попробуйте запустить дополнительный поток из SvcMain, и пусть этот поток выполнит работу по запуску внешнего исполняемого файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...