Sicherung
This commit is contained in:
71
Kalk/Consolus/WindowsHelper.cs
Normal file
71
Kalk/Consolus/WindowsHelper.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user