画面の左/右半分を占めるように新しいウィンドウの位置を変更してファイルを開くことができるシェルコンテキストメニュー「左/右に開く」を実装したいと思います。基本的には、を呼び出しProcess.Start(fileName)
てプロセスのを取得しMainWindowHandle
、ハンドルをに渡してSetWindowPos
ウィンドウの位置を設定します。
ただし、一部のアプリケーション(Wordなど)はシングルトンインスタンスとして実行されているProcess.Start("new.docx")
ため、実行中のインスタンスにファイル名を渡してを返すだけnull
で、ウィンドウハンドルを取得して再配置を行うことができません。
これに対する回避策はありますか?
Any approach (preferred written in C#) is welcome.
PS。EnumWindows
すべてのトップレベルウィンドウを一覧表示し、ユーザーが再配置するウィンドウを選択できるようにするために使用できることはわかっています。しかし、それは別の使用シナリオです。シェルのコンテキストメニューに関数を実装したい。