假设我已经有了一个窗口的句柄,我可以使用GetWindowThreadProcessId来获得pid。 有没有一种方法,我可以得到进程的名称,而不必得到所有的进程,并尝试匹配我的PID?
您可以使用Process.GetProcessById
来获取Process
。 Process
有很多关于正在运行的程序的信息。 Process.ProcessName
给你的名字, Process.Mainmodulee.FileName
给你可执行文件的名字。
Process.GetProcessById(id).ProcessName
//这是一个简单的方法来返回任务管理器的内存。 如果进程ID不存在,它将抛出一个异常,并返回0的内存
/// <summary> /// Gets the process memory. /// </summary> /// <param name="processId">The process identifier.</param> /// <returns></returns> /// <para> </para> /// <para> </para> /// <exception cref="ArgumentException"> </exception> /// <exception cref="ArgumentNullException"> </exception> /// <exception cref="ComponentModel.Win32Exception"> </exception> /// <exception cref="InvalidOperationException"> </exception> /// <exception cref="PlatformNotSupportedException"> </exception> /// <exception cref="UnauthorizedAccessException"> </exception> public static long GetProcessMemory(int processId) { try { var instanceName = Process.GetProcessById(processId).ProcessName; using (var performanceCounter = new PerformanceCounter("Process", "Working Set - Private", instanceName)) { return performanceCounter.RawValue / Convert.ToInt64(1024); } } catch (Exception) { return 0; } }