Это должно работать:
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
Попытка установить MainWindow. Подпись выдает исключение. Необходимо использовать функцию Win32 SetWindowText, чтобы изменить заголовок, но остерегаться: Visual Studio сбрасывает текст строки заголовка без колебаний, таким образом, необходимо реализовать Таймер, чтобы продолжать устанавливать требуемый текст. Следующий код от Connect
класс дополнения будет постоянно (или, пока дополнение работает), сохраняют текст строки заголовка как "Привет Мир!"
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
resetTitleTimer = new Timer(new TimerCallback(SetMainWindowTitle), "Hello world!", 0, 10);
}
[DllImport("user32.dll")]
private static extern bool SetWindowText(IntPtr hWnd, string lpString);
private void SetMainWindowTitle(object state)
{
IntPtr hWnd = (IntPtr)_applicationObject.MainWindow.HWnd;
SetWindowText(hWnd, "Hello World!");
}
Возможно, простое решение состояло бы в том, чтобы использовать виртуальные рабочие столы? Пространственное расположение легче помнить, Вы могли сгруппировать любые связанные окна с соответствующим VS, и переключение будет более простым.
Честно говоря, я не уверен, что понимаю Ваш вопрос правильно, но я спросил тот здесь относительно того, Так, чтобы, казалось, был о подобной проблеме:
для Visual Studio 2005 годаВ модели автоматизации VS существует
_DTE.MainWindow.Capation
, с которого Вы могли запустить.
См. http://msdn.microsoft.com/en-us/library/envdte._dte.mainwindow.aspx