diff options
author | merry <git@mary.rs> | 2022-03-15 01:35:41 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-15 02:35:41 +0100 |
commit | 223172ac0babc7dc272a5489ac2e91062a12a0c2 (patch) | |
tree | 86fb90cac1258ab769e5822d0f530f38e401160b /Ryujinx/Ui/Helper/ConsoleHelper.cs | |
parent | 8c9633d72fbe49ff022d907a7fdd813be95f176e (diff) |
Ui: Add option to show/hide console window (Windows-only) (#3170)1.1.72
* Ui: Add option to show/hide console window (Windows-only)
* Ui: Only display Show Console menu item on Windows
* ConsoleHelper: Handle NULL case
This will never happen
* Address nits
* Address comments
* Address comments 2
Diffstat (limited to 'Ryujinx/Ui/Helper/ConsoleHelper.cs')
-rw-r--r-- | Ryujinx/Ui/Helper/ConsoleHelper.cs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Ryujinx/Ui/Helper/ConsoleHelper.cs b/Ryujinx/Ui/Helper/ConsoleHelper.cs new file mode 100644 index 00000000..6f89df02 --- /dev/null +++ b/Ryujinx/Ui/Helper/ConsoleHelper.cs @@ -0,0 +1,49 @@ +using Ryujinx.Common.Logging; +using System; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; + +namespace Ryujinx.Ui.Helper +{ + public static class ConsoleHelper + { + public static bool SetConsoleWindowStateSupported => OperatingSystem.IsWindows(); + + public static void SetConsoleWindowState(bool show) + { + if (OperatingSystem.IsWindows()) + { + SetConsoleWindowStateWindows(show); + } + else if (show == false) + { + Logger.Warning?.Print(LogClass.Application, "OS doesn't support hiding console window"); + } + } + + [SupportedOSPlatform("windows")] + private static void SetConsoleWindowStateWindows(bool show) + { + const int SW_HIDE = 0; + const int SW_SHOW = 5; + + IntPtr hWnd = GetConsoleWindow(); + + if (hWnd == IntPtr.Zero) + { + Logger.Warning?.Print(LogClass.Application, "Attempted to show/hide console window but console window does not exist"); + return; + } + + ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE); + } + + [SupportedOSPlatform("windows")] + [DllImport("kernel32")] + static extern IntPtr GetConsoleWindow(); + + [SupportedOSPlatform("windows")] + [DllImport("user32")] + static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + } +}
\ No newline at end of file |