2015-07-11 2 views
1

Есть ли способ получить существующий экземпляр MS Publisher как Microsoft.Office.Interop.Publisher.Application?Найти существующий экземпляр Office Application

Я нашел это:

System.Diagnostics.Process.GetProcessesByName("Microsoft Publisher") 

Так что я могу проверить, если это уже работает, но как конвертировать его в приложении MS Publisher? Поэтому я могу позвонить Microsoft.Office.Interop.Publisher.Application.Open, например,?

+0

Не могли бы вы прояснить, что вы имеете в виду по вызову Application.Open? Что тебе нужно сделать? – ninjaboy

+0

Поисковый запрос - [ROT (таблица рабочих объектов)] (http://www.bing.com/search?q=c%23+running+object+table). –

ответ

4

Вы можете попробовать это Microsoft getActiveObject. Вот пример.

object word; 
    try 
    { 
     word = System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"); 
//If there is a running Word instance, it gets saved into the word variable 
    } 
    catch (COMException) 
    { 
//If there is no running instance, it creates a new one 
     Type type = Type.GetTypeFromProgID("Word.Application"); 
     word = System.Activator.CreateInstance(type); 
    } 

Надеюсь, я помог!

+0

Могу ли я таким образом использовать 'object' как' Microsoft.Office.Interop.Word.Application'? –

+0

nvm. Нашел, как и отлично работает! –

+0

Я рад, что я тебе помог! – McLinux