69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CloudBuilder.Topshelf.Utility
|
|
{
|
|
// 先把这个类放到你的代码文件里
|
|
public static class ConsoleHelper
|
|
{
|
|
[DllImport("kernel32.dll")]
|
|
static extern IntPtr GetStdHandle(int nStdHandle);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
static extern int SetStdHandle(int nStdHandle, IntPtr hHandle);
|
|
|
|
const int STD_OUTPUT_HANDLE = -11;
|
|
const int STD_ERROR_HANDLE = -12;
|
|
|
|
/// <summary>
|
|
/// 屏蔽所有底层C++输出(彻底隐藏 SherpaOnnx 日志)
|
|
/// </summary>
|
|
public static void DisableConsoleOutput()
|
|
{
|
|
var nullHandle = IntPtr.Zero;
|
|
SetStdHandle(STD_OUTPUT_HANDLE, nullHandle);
|
|
SetStdHandle(STD_ERROR_HANDLE, nullHandle);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 恢复输出(如果你需要)
|
|
/// </summary>
|
|
public static void EnableConsoleOutput()
|
|
{
|
|
var outHandle = GetStdHandle(STD_OUTPUT_HANDLE);
|
|
var errHandle = GetStdHandle(STD_ERROR_HANDLE);
|
|
SetStdHandle(STD_OUTPUT_HANDLE, outHandle);
|
|
SetStdHandle(STD_ERROR_HANDLE, errHandle);
|
|
}
|
|
}
|
|
|
|
public static class ConsoleOutput
|
|
{
|
|
private const int STD_ERROR_HANDLE = -12;
|
|
private static IntPtr _originalErrorHandle;
|
|
|
|
[DllImport("kernel32.dll")]
|
|
private static extern IntPtr GetStdHandle(int nStdHandle);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
private static extern bool SetStdHandle(int nStdHandle, IntPtr hHandle);
|
|
|
|
/// <summary>
|
|
/// 只关闭 标准错误输出(stderr)
|
|
/// 作用:屏蔽 sherpa-onnx 所有垃圾日志
|
|
/// 保留:你的进度条、控制台输出(stdout)
|
|
/// </summary>
|
|
public static void HideStdError()
|
|
{
|
|
_originalErrorHandle = GetStdHandle(STD_ERROR_HANDLE);
|
|
SetStdHandle(STD_ERROR_HANDLE, IntPtr.Zero);
|
|
}
|
|
}
|
|
}
|
|
|
|
|