我知道我可以通过调用.NET中的Debugger.IsAttached来查找是否正在调试进程,但是我希望能够获得调试进程的Visual Studio的PID。这可能吗?
答案 0 :(得分:2)
您可以使用this answer中概述的TryGetVSInstance
方法来获取Visual Studio的EnvDTE COM Automation对象的每个实例。完成后,只需迭代DTE.Debugger.DebuggedProcesses集合并检查它们中是否有任何一个指向与您感兴趣的进程相同的processID。
答案 1 :(得分:0)
This为我工作。
public static Process GetParent(Process process)
{
var processName = process.ProcessName;
var nbrOfProcessWithThisName = Process.GetProcessesByName(processName).Length;
for (var index = 0; index < nbrOfProcessWithThisName; index++)
{
var processIndexdName = index == 0 ? processName : processName + "#" + index;
var processId = new PerformanceCounter("Process", "ID Process", processIndexdName);
if ((int)processId.NextValue() == process.Id)
{
var parentId = new PerformanceCounter("Process", "Creating Process ID", processIndexdName);
return Process.GetProcessById((int)parentId.NextValue());
}
}
return null;
}