Объявление

Collapse
No announcement yet.

Вопрос разработчикам под винду и дот-нетчикам в частности

Collapse
X
 
  • Filter
  • Время
  • Show
Clear All
new posts

  • #31
    Сообщение от Andrej
    А как это там реализовано? Насколько я понимаю твой сервис манипулирует десктопом как-то.
    Если не трудно, глянь как это у тебя реализовано?
    Сорри, не совсем понял твой начальный пост.
    Этот сервис писал не я. В понедельник поищу исходники, попробую найти как они запускают процесс.
    Best wishes, Vladimir.
    If you can't have the best, make the best of what you have.

    Comment


    • #32
      Жду! (с)

      Comment


      • #33
        Сообщение от 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(&ltime);
        fprintf(pLog,"%s Failed to start program '%s', error code = %d\n", ctime(&ltime),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


        • #34
          Наверное весь фикус в структуре startUpInfo.
          Т.е. ты говоришь, что процесс не перезапускается, а продолжает работать? Хм... надо попробовать. Правда не доводилось писать сервисов на сях, но вроде ничего сложного...
          Спасибо, bvg!

          Comment


          • #35
            Сообщение от 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


            • #36
              Вот параметры CreateProcess я как раз и хочу проверить. Тестирую пока на пустышке с одной формой. Но работать должно хоть с Notepad. С самой прогой проблем быть не должно т.к. там тоже ничего навороченного нет с точки зрения основного процесса и работы с ОС - типичое VB приложение.

              Comment

              Working...
              X