Sicherung

This commit is contained in:
Maier Stephan SI
2023-01-20 16:09:00 +01:00
parent e5257d8413
commit b684704bf8
139 changed files with 95678 additions and 499 deletions

View File

@@ -0,0 +1,71 @@
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Consolus
{
internal static class WindowsHelper
{
private const int STD_OUTPUT_HANDLE = -11;
private const uint ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;
public static void EnableAnsiEscapeOnWindows()
{
var iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (iStdOut != IntPtr.Zero && GetConsoleMode(iStdOut, out uint outConsoleMode))
{
SetConsoleMode(iStdOut, outConsoleMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
}
}
[DllImport("kernel32")]
private static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
[DllImport("kernel32")]
private static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
[DllImport("kernel32")]
private static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32")]
private static extern IntPtr GetConsoleWindow();
[DllImport("kernel32")]
private static extern IntPtr GetCurrentProcessId();
[DllImport("user32")]
private static extern int GetWindowThreadProcessId(IntPtr hWnd, ref IntPtr ProcessId);
[MethodImpl(MethodImplOptions.NoInlining)]
public static bool HasConsoleWindows()
{
try
{
return GetConsoleWindow() != IntPtr.Zero;
}
catch
{
return Environment.UserInteractive;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public static bool IsSelfConsoleWindows()
{
try
{
IntPtr hConsole = GetConsoleWindow();
IntPtr hProcessId = IntPtr.Zero;
GetWindowThreadProcessId(hConsole, ref hProcessId);
var processId = GetCurrentProcessId();
return processId == hProcessId;
}
catch
{
return true;
}
}
}
}