Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/schedsvc/atsvc.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/dlls/schedsvc/atsvc.c b/dlls/schedsvc/atsvc.c index 7b3e4979fd..630e634a8f 100644 --- a/dlls/schedsvc/atsvc.c +++ b/dlls/schedsvc/atsvc.c @@ -146,7 +146,32 @@ void check_task_state(void) update_job_status(job); } else if (job->data.flags & 0x04000000) - FIXME("Run(%s): not implemented\n", debugstr_w(job->info.Command)); + { + TRACE("running process %s\n", debugstr_w(job->info.Command)); + + if (job->instance_count >= MAX_INSTANCE_COUNT) + ERR("total instance count exceeded %u\n", MAX_INSTANCE_COUNT); + else + { + STARTUPINFOW si; + PROCESS_INFORMATION pi; + + memset(&si, 0, sizeof(si)); + si.cb = sizeof(si); + /* FIXME: also specify the target directory */ + if (CreateProcessW(job->info.Command, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + { + CloseHandle(pi.hThread); + job->process[job->instance_count++] = pi.hProcess; + } + + job->data.exit_code = 0; + job->data.status = SCHED_S_TASK_RUNNING; + job->data.flags &= ~0x04000000; + job->instance_count++; + update_job_status(job); + } + } }
LeaveCriticalSection(&at_job_list_section);