5

我有一个 Visual Studio 集成包,可以跟踪调试窗口的输出。我可以获得输出窗口的 IVsTextView,如下所示:

IVsTextView view = GetService(typeof(SVsOutputWindow)) as IVsTextView;
// grab text from the view and process it

但是,如果当前激活了除“调试”面板之外的其他面板,则此 IVsTextView 将包含来自该面板的文本,而不是“调试”面板。

是否可以获得特定输出窗口面板的 IVsTextView,而无需在获取输出窗口的 IVsTextView 之前调用 OutputWindowPanel.Activate()?

4

1 回答 1

2

当然,这是可能的。您只需要选择要阅读的输出窗口窗格:

IVsOutputWindow outWindow = GetService(typeof(SVsOutputWindow)) as IVsOutputWindow;
// Give me the Debug pane
Guid debugPaneGuid = VSConstants.GUID_OutWindowDebugPane;
IVsOutputWindowPane pane;
outWindow.GetPane(ref debugPaneGuid, out pane);
// Get text view and process it
IVsTextView view = pane as IVsTextView;
于 2010-03-13T06:30:52.137 回答