2016-01-05 5 views
1

Возможно ли получить идентификатор процесса экземпляра визуальной студии через переменную DTE mDte? См. Код ниже.Получить идентификатор процесса из DTE (EnvDte)

private static DTE mDte; 

    public static void OpenVisualStudio() 
    { 
     Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); 
     mDte = Activator.CreateInstance(visualStudioType) as DTE; 

     if (mDte != null) 
     { 
      mDte.MainWindow.Visible = true; 
     } 

     // get process id of visual studio instance through mDte 
    } 
+0

Не знаю, но если вы проверите объект во время выполнения, вы сможете это выяснить. – Will

+0

Я решил это: – Lasse

+0

Вы решили это, выполнив что? Поделитесь ответом. – Chrono

ответ

0

Я сделал следующим образом:

public static int OpenVisualStudio() 
    { 
     var devenv = Process.Start("devenv.exe"); 

     if (devenv == null) 
     { 
      return 0; 
     } 

     do 
     { 
      System.Threading.Thread.Sleep(2000); 
      mDte = GetDte(devenv.Id); 
     } 
     while (mDte == null); 

     return devenv.Id; 
    } 

Я получил его отсюда: http://blogs.msdn.com/b/kirillosenkov/archive/2011/08/10/how-to-get-dte-from-visual-studio-process-id.aspx

Это решает мою проблему сейчас ...

-1

Объект DTE имеет Debugger Недвижимость имеет CurrentProcess Недвижимость имеет ProcessID Недвижимость.

int processId = dte.Debugger.CurrentProcess.ProcessID; 
+0

dte.Debugger.CurrentProcess не является процессом отладчика (т.е. devenv), это процесс, который в настоящее время отлаживается. – Alex

Смежные вопросы