これを行うことで、Office 相互運用機能を使用して Word の新しいインスタンスを作成しています。
var word = Microsoft.Office.Interop.Word.Application();
word.Visible = true;
word.Activate;
次のようなウィンドウ ハンドルを取得できます。
var wordHandle = Process.GetProcessesByName("winword")[0].MainWindowHandle;
問題は、Word の他のインスタンスが実行されていないという前提でコードが動作することです。複数ある場合、返されるハンドルが起動したインスタンスのものであるとは限りません。GetForegroundWindow
オブジェクトからイベントを検出した後に使用しようとしましWindowActivate
たが、これはすべて、最上位のウィンドウとして実行するように設定された WPF アプリケーション内で実行されているため、WPF ウィンドウへのハンドルを取得するだけです。Word のインスタンスのハンドルを取得する他の方法はありますか?