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;
///
/// 屏蔽所有底层C++输出(彻底隐藏 SherpaOnnx 日志)
///
public static void DisableConsoleOutput()
{
var nullHandle = IntPtr.Zero;
SetStdHandle(STD_OUTPUT_HANDLE, nullHandle);
SetStdHandle(STD_ERROR_HANDLE, nullHandle);
}
///
/// 恢复输出(如果你需要)
///
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);
///
/// 只关闭 标准错误输出(stderr)
/// 作用:屏蔽 sherpa-onnx 所有垃圾日志
/// 保留:你的进度条、控制台输出(stdout)
///
public static void HideStdError()
{
_originalErrorHandle = GetStdHandle(STD_ERROR_HANDLE);
SetStdHandle(STD_ERROR_HANDLE, IntPtr.Zero);
}
}
}