有没有可能通过编程的方式清除Visual Studio输出窗口?例如,SysInternal的调试器应用程序DebugView具有specific command called DBGVIEWCLEAR ..这将清除日志窗口。
请不要说:右键单击,清除窗口..用鼠标。我知道,但那不是我要找的。
发布于 2010-03-06 13:57:23
对于VS2008,请尝试以下代码
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.9.0");
ide.ExecuteCommand("Edit.ClearOutputWindow", "");
System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
"VisualStudio.DTE.9.0“将从VS版本更改为版本。
发布于 2012-03-29 19:06:37
对于VS 2010:
//Add reference EnvDTE100
static void ClearOutput()
{
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
ide.ToolWindows.OutputWindow.ActivePane.Clear();
}
发布于 2011-05-05 00:23:23
第一个答案适用于Visual Studio2005之后的任何版本,但它似乎有点不稳定。在清除控制台之前,我不得不延迟1秒,没有比这更好的了。不知道为什么,但总比什么都没有强。只有当你只运行Visual Studio的一个实例时,它才能起作用。也许我会做一个扩展,通过查看RunningObjectTable来选择正确的版本。
无论如何,这或多或少是有效的。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
namespace VisualStudioHelper {
public class VstHelper {
// Add a Project Reference to "Microsoft Development Environment Properties 8.0"
// (the one for Visual Studio, not SQL Server)
public static void VstClearOutputWindow() {
if (!Debugger.IsAttached)
return;
Application.DoEvents();
Thread.Sleep(1000);
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
ide.ExecuteCommand("Edit.ClearOutputWindow", "");
Marshal.ReleaseComObject(ide);
}
}
}
https://stackoverflow.com/questions/2391473
复制相似问题