<?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=2077&amp;view=findpost&amp;p=33501</guid>
        <pubDate>Thu, 25 Sep 2003 14:50:15 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33501</link>
        <description><![CDATA[kl: ну а о чем я писал в сообщении №3?]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33498</guid>
        <pubDate>Thu, 25 Sep 2003 10:37:33 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33498</link>
        <description><![CDATA[andrey: О, нашёл способ ещё лучше!<br>Без разницы какой тип COM сервера:<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">&#60;br&#62;public static Word.Application GetWord(){&#60;br&#62;try{&#60;br&#62;object o=System.RuntimeInteropServices.Marshal.GetActiveObject(&quot;Word.Application&quot;);&#60;br&#62;return (Word.Application)o;&#60;br&#62;}catch(System.Runtime.InteropServices.COMException){&#60;br&#62;//Какие-то глюки, скорее всего сервер не запущен&#60;br&#62;}&#60;br&#62;return new Word.ApplicationClass();&#60;br&#62;}&#60;br&#62;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br><br>А по поводу уже открытого документа - проще всего получить уже запещенный ворд (GetActiveObject) и перебрать коллекцию Documents. только вот непонятно, что делать если документы открыты в разных процессах ворда.]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33494</guid>
        <pubDate>Thu, 11 Sep 2003 13:27:10 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33494</link>
        <description><![CDATA[andrey: То, что надо, спасибо!]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33492</guid>
        <pubDate>Wed, 10 Sep 2003 20:12:26 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33492</link>
        <description><![CDATA[kl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>andrey, 11.09.03, 00:05:54</span><div class='quote '>Это понятно, а что с поиском уже открытых окон?</div></div><br>Аналога FindWindow в фреймворке нет. Глянь на этот <a class='tag-url' href='http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=6315ff6c-1347-4c9e-913b-81f266ce8de2' target='_blank'>wrapper</a> может поможет :)]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33490</guid>
        <pubDate>Wed, 10 Sep 2003 20:05:54 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33490</link>
        <description><![CDATA[andrey: Это понятно, а что с поиском уже открытых окон?]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33487</guid>
        <pubDate>Wed, 10 Sep 2003 09:59:45 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33487</link>
        <description><![CDATA[kl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>andrey, 10.09.03, 12:43:51</span><div class='quote '>Я так понимаю MSword и excel это out-of-process серверы?</div></div><br>Ну конечно, это отдельные процессы. COM-серверы бывают:<br>1. dll in-process. Dll напрямую грузится в твой процесс<br>2. dll out-of-process. Для dll создается суррогатный процесс, ктр ее хостит. Используется редко, обычно если нужна повышенная безопасность<br>3. exe. out-of-process. Отдельные процессы, передача данных идет с помощью маршалинга. Это основы COM, хорошо описаны в книге Бокса &quot;Essentials COM&quot;<br>Для out-of-process виндой создается специальная таблица - ROT, ктр содержит все запущенные экземпляры ассоциированные с их CLSID (ну или ProgId, если он задан). Остается мелочь - опросить ее на предмет нужного, получить инстанс если запущен и дергать методы]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33484</guid>
        <pubDate>Wed, 10 Sep 2003 08:43:51 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33484</link>
        <description><![CDATA[andrey: Я так понимаю MSword и excel это out-of-process серверы?]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33481</guid>
        <pubDate>Wed, 10 Sep 2003 07:43:39 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33481</link>
        <description><![CDATA[kl: Или еще можно через Marshal.GetActiveObject]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33478</guid>
        <pubDate>Wed, 10 Sep 2003 06:40:50 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33478</link>
        <description><![CDATA[kl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>andrey, 10.09.03, 07:52:18</span><div class='quote '>И в догонку, почему COM приложения всегда открываются заново, нельзя ли подключится к уже открытому экземпляру?</div></div><br>Ну если это out-of-process сервер, то для этого существует ROT - Running Object Table<br>в .NET поддержка осуществляется через интерфейс UCOMIRunningObjectTable]]></description>
        <author>kl</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33477</guid>
        <pubDate>Wed, 10 Sep 2003 03:52:18 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33477</link>
        <description><![CDATA[andrey: И в догонку, почему COM приложения всегда открываются заново, нельзя ли подключится к уже открытому экземпляру?]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33474</guid>
        <pubDate>Wed, 10 Sep 2003 03:51:14 +0000</pubDate>
        <title>Повторное открытие окна</title>
        <link>https://forum.sources.ru/index.php?showtopic=2077&amp;view=findpost&amp;p=33474</link>
        <description><![CDATA[andrey: Как можно избежать повторного открытия окна COM приложения? У мня есть программа, которая открывает документы в ворде, однако нужно, что бы уже открытый документ не открывался 2 раз. Как это сделать? Я так понимаю, нужно интеропнуть FindWindow. Нет ли способа попроще (желательно без interop)?]]></description>
        <author>andrey</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	