2012-03-01 3 views
5

Я хочу, чтобы мое приложение Word появилось на переднем плане, когда автоматизация завершилась.Как получить идентификатор Hwnd/Process для приложения Word и установить в качестве окна переднего плана

Эквивалент в Excel прямо вперед - объект Excel Application имеет свойство .Hwnd, который можно использовать в сочетании с API Windows:

SetForegroundWindow((IntPtr)excelApp.Hwnd); 

Однако применение Слово не имеет свойство .Hwnd ,

Я попытался с помощью Activate() в следующей последовательности:

wordDoc.Activate(); 
wordApp.Activate(); 

, но это не работает.

Я просмотрел процесс, используя имя приложения, но может быть более одной копии Word.

Благодаря

Джо

+0

Хорошо, есть сообщение на SO, описывающее его. http://stackoverflow.com/questions/814936/get-pid-from-word-applicationclass –

+1

Спасибо, Греко. Я видел этот пост, я надеялся сохранить код сверху вниз. –

ответ

4

Вам может понадобиться итерировать processArray за пределы первой. Со словом 2010 только один WinWord отображается в диспетчере задач независимо от того, сколько экземпляров открыто.

 System.Diagnostics.Process[] processArray = System.Diagnostics.Process.GetProcessesByName("WinWord"); 
     System.Diagnostics.Process word = processArray[0]; 
     SetForegroundWindow(word.MainWindowHandle); 
+0

+1 для информации, но Я должен вмешаться: это определенно неверно в отношении Word 2010+, когда-либо создавшего один процесс «WinWord» - просто вызов «нового приложения (...)» - это все, что требуется. – BrainSlugs83

Смежные вопросы