【问题标题】:How can I determine the current focused process name and version in C#如何在 C# 中确定当前关注的进程名称和版本
【发布时间】:2010-09-12 04:24:08
【问题描述】:

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

版本号很重要...

【问题讨论】:

    标签: c# process pinvoke user32


    【解决方案1】:

    这将是 PInvoke 城市...

    您需要在 User32.dll 中 PInvoke 以下 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。

    【讨论】:

    • 你能举个例子说明如何使用 to 吗?
    【解决方案2】:

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

    无论哪种方式,您都希望通过 System.Reflection.Assembly 获取信息。 (请参阅链接中的代码示例。)

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 2011-08-13
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-09
        相关资源
        最近更新 更多