Сообщение от Andrej
Объявление
Collapse
No announcement yet.
Вопрос разработчикам под винду и дот-нетчикам в частности
Collapse
X
-
Сообщение от AndrejЕсли не трудно, глянь как это у тебя реализовано?
UserInterface=Y, т.е. для них должна выполняться ветка if(bUserInterface)
[code]
BOOL StartProcess(int nIndex)
{
STARTUPINFO startUpInfo = { sizeof(STARTUPINFO),NULL,"",NULL,0,0,0,0,0,0,0,0,SW_HIDE,0,NULL,0,0,0};
char pItem[nBufferSize+1];
sprintf(pItem,"Process%d\0",nIndex);
char pCommandLine[nBufferSize+1];
GetPrivateProfileString(pItem,"CommandLine","",pCommandLine,nBufferSize,pInitFile);
char pUserInterface[nBufferSize+1];
GetPrivateProfileString(pItem,"UserInterface","N",pUserInterface,nBufferSize,pInitFile);
BOOL bUserInterface = (pUserInterface[0]=='y'||pUserInterface[0]=='Y'||pUserInterface[0]=='1')?TRUE:FALSE;
if(bUserInterface)
{
startUpInfo.wShowWindow = SW_SHOW;
startUpInfo.lpDesktop = NULL;
}
char pWorkingDir[nBufferSize+1];
GetPrivateProfileString(pItem,"WorkingDir","",pWorkingDir,nBufferSize,pInitFile);
if(CreateProcess(NULL,pCommandLine,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,strlen(pWorkingDir)==0?NULLWorkingDir,&startUpInfo,&pProcInfo[nIndex]))
{
char pPause[nBufferSize+1];
GetPrivateProfileString(pItem,"PauseStart","100",pPause,nBufferSize,pInitFile);
Sleep(atoi(pPause));
return TRUE;
}
else
{
long nError = GetLastError();
FILE* pLog = fopen(pLogFile,"a");
time_t ltime;
time(<ime);
fprintf(pLog,"%s Failed to start program '%s', error code = %d\n", ctime(<ime),pCommandLine, nError);
fclose(pLog);
return FALSE;
}
}
[/code]Best wishes, Vladimir.
If you can't have the best, make the best of what you have.
Comment
-
Сообщение от AndrejНаверное весь фикус в структуре startUpInfo.
Т.е. ты говоришь, что процесс не перезапускается, а продолжает работать? Хм... надо попробовать. Правда не доводилось писать сервисов на сях, но вроде ничего сложного...
Спасибо, bvg!
Собственно, получается, что в этой структуре все вообще обнуляется, даже десктоп:
startUpInfo.lpDesktop = NULL;
И скорее всего не важно на чем написан сервис. Ты же его уже вроде как написал. Просто проверь параметры CreateProcess.
Еще может быть, что дело не в сервисе, а том приложении...Best wishes, Vladimir.
If you can't have the best, make the best of what you have.
Comment
-
Вот параметры CreateProcess я как раз и хочу проверить. Тестирую пока на пустышке с одной формой. Но работать должно хоть с Notepad. С самой прогой проблем быть не должно т.к. там тоже ничего навороченного нет с точки зрения основного процесса и работы с ОС - типичое VB приложение.
Comment
Comment