■18835 / ) |
Re[1]: アプリケーション名の取得 |
□投稿者/ シャノン (417回)-(2008/05/16(Fri) 16:52:58)
|
■No18829 (れれれ さん) に返信 > お世話になっていますれれれです。 > > 早速質問なのですが、アクティブうなウィンドウのアプリケーション(?)を取得するプログラムを考えています。 > > [DllImport("user32.dll")] > private static extern IntPtr GetForegroundWindow(); > > [DllImport("user32.dll")] > private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int length); > private void Form1_Load(object sender, EventArgs e) > { > IntPtr hWnd = GetForegroundWindow(); > StringBuilder title = new StringBuilder(1048); > GetWindowText(hWnd, title, 1024); > MessageBox.Show(title.ToString()); > } > > これでアクティブなウィンドウのタイトルは表示されますが、そのウィンドウを生成しているアプリケーション(Firefoxとか Microsoft Visual Studioなど)を取得するにはどうすればいいのでしょうか? > > どうかご教授お願いします。
GetWindowThreadProcessId 関数で、そのウィンドウを生成したプロセスの ID が取得できます。 これを Process.GetProcessById に渡せば、Process オブジェクトが得られるでしょう。
ただ、「アプリケーション名」を得るにはもう一手間要りそうです。 というか、アプリケーション名って何でしょうね? プロセスのメインモジュールのバージョン情報から説明を引っ張ってくるとかでしょうか。 であれば、先ほど得た Process に対し、
process.Modules[ 0 ].FileVersionInfo.ProductName
で取得できるかもしれません。
|
|