たとえば、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つの関数EnumWindowsと GetWindowtextを示しています
あなたの質問を明確にできますか?アクティブなウィンドウのプログラムに関するデータを表示するプログラムを実行する必要があるということですか?または、プログラムに独自のバージョンを報告させたいですか?
どちらの方法でも情報を取得するために探しているのは、System.Reflection.Assemblyです。(リンクのコード例を参照してください。)
外部プログラムからアセンブリを取得するにはどうすればよいですか?それについてはよくわかりません...