1

例如,如果我正在使用 Visual Studio 2008,我想要值 devenv 和 2008 或 9。

版本号很重要...

4

3 回答 3

8

这将是 PInvoke 城市......

您需要在 User32.dll 中调用以下 API

Win32::GetForegroundWindow() in 返回当前活动窗口的 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。

于 2008-09-22T22:20:32.063 回答
0

这个项目演示了你需要的两个函数:EnumWindowsGetWindowtext

于 2008-09-22T22:18:24.753 回答
0

你能澄清你的问题吗?你的意思是你想要一个程序运行,它会告诉你关于活动窗口中程序的数据?或者您希望您的程序报告自己的版本?

您正在寻找以任何方式获取信息的是System.Reflection.Assembly。(请参阅链接中的代码示例。)

如何从外部程序获取程序集?那个我不确定...

于 2008-09-22T22:19:59.803 回答