<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3792521</guid>
        <pubDate>Mon, 11 Mar 2019 20:09:00 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3792521</link>
        <description><![CDATA[Jin X: Я же правильно понимаю, что имя event&#39;а нужно обязательно начинать с &quot;Global&#092;&quot; ? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-03-11T23:09:24+03:00">11.03.19, 20:09</time></span></span><br>
Напомню, что ивент создаёт юзерская прога, а сервис потом подцепляет.]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3785002</guid>
        <pubDate>Sun, 09 Dec 2018 18:30:22 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3785002</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784977'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2018-12-09T09:34:03+00:00">09.12.18, 09:34</time></span><div class='quote '>Было бы, конечно, удобнее, если бы именованное что-либо было создано сервисом, а не гуем, т.к. гуй будет запускаться, ясное дело, позже.</div></div>Та можно. Только намаешься токен создавать, который был бы доступен для несервисов.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784987</guid>
        <pubDate>Sun, 09 Dec 2018 14:19:56 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784987</link>
        <description><![CDATA[Mr.Delphist: Всё правильно говорят - интерактивный GUI должен быть ВНЕ сервиса, потому что Microsoft планомерно перекрывает кислород интерактивным сервисам. <br>Связь между сервисом и GUI - через любой доступный inter-process communication (IPC): sockets, pipes, memory mapped files. Для уменьшения проблем конфигурирования можно задействовать UPnP.]]></description>
        <author>Mr.Delphist</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784977</guid>
        <pubDate>Sun, 09 Dec 2018 09:34:03 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784977</link>
        <description><![CDATA[Jin X: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784960'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2018-12-08T17:53:02+00:00">08.12.18, 17:53</time></span><div class='quote '>Именованного пайпа должно быть достаточно, если приёмник всего один</div></div>Было бы, конечно, удобнее, если бы именованное что-либо было создано сервисом, а не гуем, т.к. гуй будет запускаться, ясное дело, позже.<br>
Но в принципе, если сделать просто триггер (по сути, мне триггера даже достаточно в данном случае), то можно создать именованный ивент в гуе, а в сервисе периодически пытаться его открыть и проверять наличие &quot;сигнала&quot; в нём.<br>
Это прям вообще просто будет.]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784960</guid>
        <pubDate>Sat, 08 Dec 2018 17:53:02 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784960</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784913'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2018-12-07T19:34:53+00:00">07.12.18, 19:34</time></span><div class='quote '>CreateFileMapping + MapViewOfFile</div></div><br>
Избыточно. Именованного пайпа должно быть достаточно, если приёмник всего один]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784954</guid>
        <pubDate>Sat, 08 Dec 2018 14:27:58 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784954</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784913'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2018-12-07T19:34:53+00:00">07.12.18, 19:34</time></span><div class='quote '>Что если сделать 2 отдельные проги: сервис и конфигуратор, а взаимодействие с ними через shared memory сделать?</div></div><br>
В сервисе - UDP сервер. В конфигураторе - UDP клиент.<br>
Можно будет по-рулить и удалённо.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784943</guid>
        <pubDate>Sat, 08 Dec 2018 07:44:43 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784943</link>
        <description><![CDATA[Jin X: Ясно, спасибо, буду экспериментировать :)]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784915</guid>
        <pubDate>Fri, 07 Dec 2018 19:53:15 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784915</link>
        <description><![CDATA[Qraizer: Из проги сигналишь эвентом, который слушает служба. Нормально. Проблема лишь в том, чтобы и прога, и сервис – они оба имели права на доступ в эвенту. Проще всего – прога регистрирует именованный эвент, сервис <strong class='tag-b'>после</strong> проги его открывает по тому же имени, пока та не завершилась и т.с. не убила созданный эвент. Если наоборот, то сервис должен будет заморочиться правильным токеном для эвента, чтобы проге хватило прав его пользовать.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784913</guid>
        <pubDate>Fri, 07 Dec 2018 19:34:53 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784913</link>
        <description><![CDATA[Jin X: Смотрите. У меня есть сервис и есть конфигуратор. Конфигуратор - это GUI, который меняет параметры. И далее, по сути, ему нужно только уведомить сервис об изменениях, чтобы тот прочёл конфигурацию заново.<br>
Что если сделать 2 отдельные проги: сервис и конфигуратор, а взаимодействие с ними через shared memory сделать? CreateFileMapping + MapViewOfFile + event&#39;ы, к примеру.<br>
Это если что-то передать. А если просто уведомить, то и event&#39;ов достаточно...<br>
Это нормально будет работать между обычной прогой и сервисом?<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-12-07T19:38:49+00:00">07.12.18, 19:38</time></span></span><br>
Даже так: вторая прога - это не прога, а батник, который будет запускать прогу с ключом <strong class='tag-b'>/config</strong>, к примеру :)]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784850</guid>
        <pubDate>Fri, 07 Dec 2018 11:11:42 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784850</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>Jin X</strong>, ну, я слишком утрировано описал. Это было возможно в XP. Нынче, нулевая сессия больше недоступна для пользовательских сеансов, так что интерактивные сервисы ты сможешь сделать, только если будешь запускаться под учёткой какого-нибудь пользователя. Вряд ли это проще интеракции с неинтерактивным сервисом, т.к. ты получишь больше проблем с отслеживанием пользовательских сессий, их список же может меняться по ходу дела, + ты получишь те же ограничения, что учётная запись пользователя. В целом же, если ориентироваться на неинтерактивные сессии, <strong class='tag-b'>Олег М</strong> правильно написал:<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2018-12-07T08:40:26+00:00">07.12.18, 08:40</time></span><div class='quote '>Вообще, на мой взгляд - не самая лучшая идея делать гуи в сервисе. Проще сделать отдельное приложение, которое будет работать с этим сервисом, например по DCOM</div></div>. Это не сложно, нужно лишь получить текущую активную сессию пользователя – на сервере терминалов могут быть сложности, там все сессии активны одновременно, так что нужно изобретать другие алгоритмы для выбора сеанса для внедрения – получить токен её юзера и запустить процесс от его имени. Взаимодействие с дочерним процессом наладить можно сильно по-разному, не обязательно DCOM. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2018-12-07T11:22:19+00:00">07.12.18, 11:22</time></span></span><br>
Как-то так у меня экспериментировалось:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unsigned __stdcall threadFunc(void*)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;DWORD res;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;// Ждём сигналов: выход или окошко</div><div class="code_line">&nbsp;&nbsp;while ((res = WaitForMultipleObjects(events.size(), &amp;events[0], FALSE, INFINITE)) == WAIT_OBJECT_0+1)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Подстроиться под текущий логин</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Получить текущий сеанс.</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Это для WinXP с её Fast User Switch. В реальной терминалсерверной среде лучше оперировать</div><div class="code_line">&nbsp;&nbsp; &nbsp;// иными критериями, например, перечислить все сеансы функцией WTSEnumerateSessions()</div><div class="code_line">&nbsp;&nbsp; &nbsp;DWORD &nbsp;sessionID = WTSGetActiveConsoleSessionId();</div><div class="code_line">&nbsp;&nbsp; &nbsp;HANDLE ppToken;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!WTSQueryUserToken(sessionID, &amp;ppToken))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DWORD res=GetLastError();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MessageBox(NULL, static_cast&#60;std::tostringstream&amp;&amp;&#62;(std::tostringstream() &#60;&#60; res &#60;&#60; _T(&quot; - WTSQueryUserToken() fail&quot;)).str().c_str(), _T(&quot;RehostStatus&quot;), MB_SERVICE_NOTIFICATION | MB_OK);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetEvent(hStart);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Подготовка к старту процесса</div><div class="code_line">&nbsp;&nbsp; &nbsp;STARTUPINFO &nbsp; &nbsp; &nbsp; &nbsp; startInfo = { sizeof(startInfo), NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL, NULL, NULL, NULL };</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Запускаем себя же, но с параметром &quot;startGUI&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp;PROCESS_INFORMATION processInfo;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::tstring &nbsp; &nbsp; &nbsp; &nbsp;commandLine(GetCommandLine());</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;commandLine += _T(&quot; startGUI{text}&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;commandLine += _T(&#39;{text}&#39;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!CreateProcessAsUser(ppToken, NULL, &amp;commandLine[0], NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;startInfo, &amp;processInfo))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DWORD res=GetLastError();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MessageBox(NULL, static_cast&#60;std::tostringstream&amp;&amp;&#62;(std::tostringstream() &#60;&#60; res &#60;&#60; _T(&quot; - CreateProcessAsUser() fail&quot;)).str().c_str(), _T(&quot;RehostStatus&quot;), MB_SERVICE_NOTIFICATION | MB_OK);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetEvent(hStart);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Подчищаем за собой</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseHandle(ppToken);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseHandle(processInfo.hProcess);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Ждём завершения запущенного себя</div><div class="code_line">&nbsp;&nbsp; &nbsp;WaitForSingleObject(processInfo.hThread, INFINITE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseHandle(processInfo.hThread);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Сигналим главной нити</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetEvent(hStart);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;return res == WAIT_OBJECT_0;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784813</guid>
        <pubDate>Fri, 07 Dec 2018 08:40:26 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784813</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2018-12-07T08:31:02+00:00">07.12.18, 08:31</time></span><div class='quote '>Но я тут один, никаких юзеров больше нет. Значит ли это, что я в 0-й сессии? </div></div><br>
А под какой учётной записью запускается сервис?<br>
Вообще, на мой взгляд - не самая лучшая идея делать гуи в сервисе. Проще сделать отдельное приложение, которое будет работать с этим сервисом, например по DCOM]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784810</guid>
        <pubDate>Fri, 07 Dec 2018 08:31:02 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784810</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Олег М</strong>, ну вот у меня lpServiceStartName = NULL, флаг SERVICE_INTERACTIVE_PROCESS указан, значение NoInteractiveServices в реестре установлено в 0.<br>
В <s class='tag-s'>импотенте</s> Importent&#39;е сказано, но отображение идёт только в 0-й сессии. Но я тут один, никаких юзеров больше нет. Значит ли это, что я в 0-й сессии? И как понять фразу &quot;do not configure a service to run as an interactive service under Terminal Services&quot; ?<br>
<br>
<strong class='tag-b'>Qraizer</strong>, можешь чуть поконкретнее рассказать, как это всё делать?<br>
1. Как получить сессию текущего юзера (без привязки к текущему процессу).<br>
2. Как имперсонировать нитку под сессию?<br>
3. Как внедрить в сессию?<br>
:)]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784706</guid>
        <pubDate>Thu, 06 Dec 2018 13:57:43 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784706</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>Jin X</strong>, создаёшь новую нить, получаешь сессию текущего юзера, которого, к слову, может и не быть, имперсонируешь нитку под этого юзера, внедряешь в его сессию – и вуаля, делов-то :lol: . Так ты точно не скомпрометируешь систему.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784691</guid>
        <pubDate>Thu, 06 Dec 2018 11:42:07 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784691</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=413863&view=findpost&p=3784683'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2018-12-06T11:12:31+00:00">06.12.18, 11:12</time></span><div class='quote '>Просто простановка флага SERVICE_INTERACTIVE_PROCESS (вместе с SERVICE_WIN32_OWN_PROCESS) в CreateService ничего не даёт.</div></div><br>
<br>
А что именно не получается? <a class='tag-url' href='https://docs.microsoft.com/en-us/windows/desktop/services/interactive-services' target='_blank'>https://docs.microsoft.com/en-us/windows/de...active-services</a>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784683</guid>
        <pubDate>Thu, 06 Dec 2018 11:12:31 +0000</pubDate>
        <title>Интерактивный сервис (служба)</title>
        <link>https://forum.sources.ru/index.php?showtopic=413863&amp;view=findpost&amp;p=3784683</link>
        <description><![CDATA[Jin X: <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class='tag-size' data-value='17' style='font-size:17pt;'>std::cout &lt;&lt; &quot;<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">Привет всем&#33;</span></strong>&quot;;</span></span><br>
<br>
Хочу сделать так, чтобы сервис мог создавать окна GUI.<br>
<br>
Просто простановка флага <strong class='tag-b'>SERVICE_INTERACTIVE_PROCESS</strong> (вместе с <strong class='tag-b'>SERVICE_WIN32_OWN_PROCESS</strong>) в <strong class='tag-b'>CreateService</strong> ничего не даёт.<br>
<br>
Подскажите, плиз, каким образом это делается?]]></description>
        <author>Jin X</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	