Я не могу попробовать прямо сейчас, поэтому возьмите с собой крупицу соли:
public class Connect : IDTExtensibility2, IDTCommandTarget
{
public void OnConnection( object application, ext_ConnectMode connectMode,
object addInInst, ref Array custom )
{
_applicationObject = ( DTE2 ) application;
_applicationObject.Events.SelectionEvents.OnChange += SelectionEvents_OnChange;
}
void SelectionEvents_OnChange()
{
vsWindowType type = _applicationObject.ActiveWindow.Type;
// switch (type) { ... }
}
}
РЕДАКТИРОВАТЬ: Может быть, событие выбора не то, что вам нужно. Я не знаю, есть ли какое-то другое событие, которое вы можете подключить. В любом случае линия
vsWindowType type = _applicationObject.ActiveWindow.Type;
сообщает тип текущего активного окна.