私は小さなツール (Windows 7、32 ビット) を実行しています。これを試した別のアプリケーションでどのドキュメントが開いているかを確認したいのですが、これは Windows のメモ帳で動作します。
var myProcess = Process.GetProcessesByName("NotePad");
string title = myProcess[0].MainWindowTitle;
MessageBox.Show(title);
出力は次のとおりです。
"New Text Document - Notepad"
ここで、別のアプリケーションを試してみると、常に正しいタイトルが表示されるとは限りませんが、ほとんどの Microsoft アプリケーション (メモ帳、ワードパッド、EXCEL など) は問題ないように見えることに気付きました。問題なのは、この他のソフトウェアです。長いタイトルですが、非常に単純な名前を返すだけです。
これは、processName = "FooBar"を持つアプリケーションから取得したものです 。実際に実行中のウィンドウには、これが一番上にあります。
「FooBar ソフトウェア バージョン 1.2 - [結果]」
そして私のコードは次のようになります:
「フーバー」
何か案は?
[編集] 2012-11-19 この問題の核心は、ウィンドウから開いているファイルの名前を取得しようとしていたことです。今使っているソフトでは表示されないようです。私が発見したのは、「AutoIT3 Window Spy」と呼ばれるプログラムが、開いているファイルのテキストがタイトルだけでなくウィンドウ上にあるため、必要なテキストを取得できることです。ソースをダウンロードしました (これはオープン ソースであるhttp://www.autohotkey.com/の一部です。すでに行われた多くの提案に依存しているようですが、まだ理解できていません)。私が見ているコードは c++ で、ここにありますhttps://github.com/AutoHotkey/AutoHotkey
したがって、私の問題の解決策は別の場所にあると思います。これは答えられないかもしれません。