6

我知道我可以通过调用 .NET 中的 Debugger.IsAttached 来查找是否正在调试进程,但我希望能够获得用于调试进程的 Visual Studio 的 PID。这可能吗?

4

2 回答 2

2

您可以使用此答案TryGetVSInstance中概述的方法来获取 Visual Studio 的 EnvDTE COM 自动化对象的每个实例。一旦你有了它,只需迭代DTE.Debugger.DebuggedProcesses集合并检查它们中的任何一个是否指向与你感兴趣的进程相同的 processID。

于 2012-06-23T10:07:07.090 回答
0

对我有用。

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;
}
于 2014-10-27T22:00:28.747 回答