如何在C#中确定当前关注的进程名称和版本

Hai*_*der 1 c# pinvoke process user32

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

版本号非常重要......

ste*_*hbu 8

这将是PInvoke市......

您需要在User32.dll中PInvoke以下API

Win32 :: GetForegroundWindow()返回当前活动窗口的HWND.

/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
Run Code Online (Sandbox Code Playgroud)

Win32 :: GetWindowThreadProcessId(HWND,LPDWORD)返回给定HWND的PID

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
Run Code Online (Sandbox Code Playgroud)

在C#中

Process.GetProcessByID()获取PID以创建C#进程对象

processInstance.MainModule返回附加了FileVersionInfo的ProcessModule.