如何在WinForm C#中获取当前运行的应用程序名称和ID?

时间:2015-02-02 08:08:23

标签: c# winforms

public static string GetActiveProcessFileName()
{        
   try
    {
        IntPtr hwnd = GetForegroundWindow();
        uint pid;
        GetWindowThreadProcessId(hwnd, out pid);
        Process p = Process.GetProcessById((int)pid);

        CommandLine = GetMainModuleFilepath((int)pid);

    catch (Exception ex)
    {
        ErrorLog.ErrorLog.Log(ex);
        return "Explorer";
    }
}

 public static string GetMainModuleFilepath(int processId)
    {
        try
        {
            wmiQueryString = "SELECT * FROM Win32_Process WHERE ProcessId = " + processId;
            using (searcher = new ManagementObjectSearcher(wmiQueryString))
            {
                using (results = searcher.Get())
                {


                    mo = results.Cast<ManagementObject>().FirstOrDefault();
                    if (mo != null)
                    {
                        return ((object)mo["CommandLine"]).ToString();
                    }
                }
            }
            //Process testProcess = Process.GetProcessById(processId);
            return null;
        }
        catch (Exception ex)
        {
            ErrorLog.ErrorLog.Log(ex);
            return null;
        }
    }

在这里,我得到ProcessID并且它正在运作。但我希望我找到应用程序名称和ID。

如何使用ID获取正在运行的应用程序名称以及如何将Id传递给`Win32_Process表。

我为获取processid添加了win32_proceess,但是我们跟踪了应用程序ID

2 个答案:

答案 0 :(得分:2)

您可以使用流程类的方法获取应用程序ID和名称:

System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
int id = p.Id;
string name = p.ProcessName;

答案 1 :(得分:0)

投票给Jonathan,但想添加另一种方式(只要你不使用点击一次)

System.AppDomain.CurrentDomain.FriendlyName