2017-02-12 20 views
1

В моем расширение Visual Studio, я могу закрыть окно в IDE, делая это:VSIX расширение - закрытие окна, кажется, не имеют vsWindowKind константы

var dte = (DTE)GetService(typeof(EnvDTE.DTE)); 
dte.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Close(); 

(Это закрывает окно вывода)

Есть окна, у которых нет константы «vsWindowKind» (все они перечислены здесь: https://msdn.microsoft.com/en-us/library/envdte.constants.aspx) - вы все равно можете закрыть их, если знаете GUID. Например:

dte.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Close(); 

закрывает окно Team Explorer (я обнаружил, что GUID из другого SO вопрос:.? How do I run a TFS Work Item Query with Visual Studio Macros

Мой вопрос, где я могу найти полный список IDE окна GUIDs

EDIT: так для VS2015 и ниже я могу найти список окон инструментов в реестре, выполнив следующие действия:

var keyname = @"Software\Microsoft\VisualStudio\14.0_Config\ToolWindows"; 
using (var key = Registry.CurrentUser.OpenSubKey(keyname)) 
{ 
    foreach (var subkey in key.GetSubKeyNames()) 
    { 
     var fullkey = @"HKEY_CURRENT_USER\" + keyname + "\\" + subkey; 
     var name = (string)Registry.GetValue(fullkey, "Name", ""); 
     if (!string.IsNullOrWhiteSpace(name)) 
     { 
       Console.WriteLine($"{subkey} {name}"); 
     } 
    } 
} 

Однако нет такого Entri es для VS2017 (возможно, потому, что он позволяет устанавливать несколько копий на одном ПК).

В любом случае, документальный список по-прежнему отсутствует!

ответ

0

Вы можете получить текущее окно GUID с DTE.ActiveWindow.ObjectKind. Таким образом, вы можете сами создать список GUID окна IDE.

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

  • Нет связанных вопросов^_^