2012-03-01 8 views
5

オートメーションが完了したらフォアグラウンドに来るように私のワードアプリケーションにしたいです。 ExcelでWordアプリケーションのHwnd /プロセスIDを取得してフォアグラウンドウィンドウとして設定する方法

同等のは簡単です - ExcelのApplicationオブジェクトは、Windows APIと組み合わせて使用​​することができます.Hwndプロパティを持っています

SetForegroundWindow((IntPtr)excelApp.Hwnd); 

Wordアプリケーションが.Hwndプロパティを持っていないしかし、 。

私はこの順序でActivateを()を使用して試した:

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

が、これは動作しません。

アプリケーション名を使用してプロセスを検索しましたが、実行中のWordのコピーが複数存在する可能性があります。

おかげ

ジョー

+0

そんなことを述べている投稿があります。 http://stackoverflow.com/questions/814936/get-pid-from-word-applicationclass –

+1

Grecoありがとうございました - 私はその投稿を見ました、私はコードオーバーヘッドを下げることを望んでいました.. –

答えて

4

あなたが最初に超えprocessArrayを反復する必要があるかもしれません。 Word 2010では、いくつのインスタンスが開いていても、1つのWinWordだけがタスクマネージャに表示されます。

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

+1の情報が、私は挿入する必要があります:それは間違いなくWord 2010 +については、 "WinWord"プロセスを生成するだけではなく、 "新しいアプリケーション(...)"を2回呼び出すだけです。 – BrainSlugs83

関連する問題