プログラムでVisualStudioの出力ウィンドウをクリアする方法はありますか?たとえば、DebugViewと呼ばれるSysInternalのデバッガーアプリには、ログウィンドウをクリアするDBGVIEWCLEAR..と呼ばれる特定のコマンドがあります。
言わないでください:マウスで右クリックしてウィンドウをクリアします。私はそれを知っていますが、それは私が求めているものではありません。
プログラムでVisualStudioの出力ウィンドウをクリアする方法はありますか?たとえば、DebugViewと呼ばれるSysInternalのデバッガーアプリには、ログウィンドウをクリアするDBGVIEWCLEAR..と呼ばれる特定のコマンドがあります。
言わないでください:マウスで右クリックしてウィンドウをクリアします。私はそれを知っていますが、それは私が求めているものではありません。
VS 2008 の場合、このコードを試してください
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のバージョンからバージョンが変わります。
VS 2010の場合:
//Add reference EnvDTE100
static void ClearOutput()
{
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
ide.ToolWindows.OutputWindow.ActivePane.Clear();
}
最初の答えは、Visual Studio 2005 以降のどのリリースでも機能しますが、少し不安定なようです。コンソールをクリアする前に 1 秒の遅延を置かなければならず、それ以上のものは得られませんでした。理由はわかりませんが、何もないよりはましです。また、Visual Studio のインスタンスを 1 つだけ実行している場合にのみ機能します。おそらく、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);
}
}
}
VS 2019 の場合、このコードを試してください
// Interop.EnvDTE100 への参照を追加
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
ide.ExecuteCommand("Edit.ClearOutputWindow", ""); System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
Console.Clear()はどうですか?