19

プログラムでVisualStudioの出力ウィンドウをクリアする方法はありますか?たとえば、DebugViewと呼ばれるSysInternalのデバッガーアプリには、ログウィンドウをクリアするDBGVIEWCLEAR..と呼ばれる特定のコマンドがあります。

言わないでください:マウスで右クリックしてウィンドウをクリアします。私はそれを知っていますが、それは私が求めているものではありません。

4

5 に答える 5

7

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のバージョンからバージョンが変わります。

于 2010-03-06T05:57:22.787 に答える
3

VS 2010の場合:

//Add reference EnvDTE100
static void ClearOutput()
{
    EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
    ide.ToolWindows.OutputWindow.ActivePane.Clear();
}
于 2012-03-29T11:06:36.753 に答える
2

最初の答えは、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);
        }
    }
}
于 2011-05-04T16:23:23.303 に答える
0

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);

于 2020-02-21T19:28:46.380 に答える
-1

Console.Clear()はどうですか?

于 2010-03-06T05:56:54.713 に答える