C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 37 を表示中)
■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

で取得できるかもしれません。
返信 編集キー/


管理者用

- Child Tree -