C# で現在フォーカスされているプロセスの名前とバージョンを確認するにはどうすればよいですか?
質問
たとえば、Visual Studio 2008 で作業している場合は、値 devenv と 2008 または 9 が必要です。
バージョン番号は非常に重要です...
解決
ここはPInvoke市になります...
User32.dll で次の API を PInvoke する必要があります。
Win32::GetForegroundWindow() は、現在アクティブなウィンドウの HWND を返します。
/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
Win32::GetWindowThreadProcessId(HWND,LPDWORD) は、指定された HWND の PID を返します。
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
C# の場合
Process.GetProcessByID() は PID を取得して C# プロセス オブジェクトを作成します
processInstance.MainModule は、FileVersionInfo が添付された ProcessModule を返します。
他のヒント
これ プロジェクト 必要な 2 つの関数を示します。 列挙Windows そして ウィンドウテキストの取得
質問を明確にしてもらえますか?アクティブなウィンドウ内のプログラムに関するデータを表示するプログラムを実行したいということですか?それとも、プログラムに独自のバージョンを報告させたいですか?
いずれの方法でも情報を取得するために探しているのは システム.リフレクション.アセンブリ. 。(リンク内のコード例を参照してください。)
外部プログラムからアセンブリを取得するにはどうすればよいですか?それはよくわかりません...
所属していません StackOverflow