如何让父进程在.NET中的管理方式 [英] How to get parent process in .NET in managed way
本文介绍了如何让父进程在.NET中的管理方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在寻找很多关于方法来获得在.NET父进程,但只找到的P / Invoke方法。
I was looking a lot for method to get parent process in .NET, but found only P/Invoke way.
推荐答案
这code提供了一个很好的界面查找父进程的对象,并考虑到多个进程的名称相同的可能性:
This code provides a nice interface for finding the Parent process object and takes into account the possibility of multiple processes with the same name:
用法:
Console.WriteLine("ParentPid: " + Process.GetProcessById(6972).Parent().Id);
code:
public static class ProcessExtensions {
private static string FindIndexedProcessName(int pid) {
var processName = Process.GetProcessById(pid).ProcessName;
var processesByName = Process.GetProcessesByName(processName);
string processIndexdName = null;
for (var index = 0; index < processesByName.Length; index++) {
processIndexdName = index == 0 ? processName : processName + "#" + index;
var processId = new PerformanceCounter("Process", "ID Process", processIndexdName);
if ((int) processId.NextValue() == pid) {
return processIndexdName;
}
}
return processIndexdName;
}
private static Process FindPidFromIndexedProcessName(string indexedProcessName) {
var parentId = new PerformanceCounter("Process", "Creating Process ID", indexedProcessName);
return Process.GetProcessById((int) parentId.NextValue());
}
public static Process Parent(this Process process) {
return FindPidFromIndexedProcessName(FindIndexedProcessName(process.Id));
}
}
这篇关于如何让父进程在.NET中的管理方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文