6

.NET で Debugger.IsAttached を呼び出してプロセスがデバッグされているかどうかを確認できることはわかっていますが、プロセスをデバッグしている Visual Studio の PID を取得できるようにしたいと考えています。これは可能ですか?

4

2 に答える 2

2

この回答TryGetVSInstanceで概説されている方法を使用して、Visual Studio の EnvDTE COM Automation オブジェクトの各インスタンスを取得できます。それができたら、 DTE.Debugger.DebuggedProcessesコレクションを反復処理し、関心のあるプロセスと同じプロセス ID を指しているものがあるかどうかを確認します。

于 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 に答える