1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-09 15:33:31 +08:00

avoid use console window if debug console is enabled in BepInEx

This commit is contained in:
2024-11-12 15:01:53 +08:00
parent 6048db8069
commit 5b725ff94f
2 changed files with 8 additions and 1 deletions

View File

@@ -137,6 +137,9 @@ public static class WinApi
[DllImport("kernel32", ExactSpelling = true)] [DllImport("kernel32", ExactSpelling = true)]
public static extern int GetCurrentProcessId(); public static extern int GetCurrentProcessId();
[DllImport("kernel32", ExactSpelling = true)]
public static extern IntPtr GetConsoleWindow();
[DllImport("kernel32", ExactSpelling = true, SetLastError = true)] [DllImport("kernel32", ExactSpelling = true, SetLastError = true)]
public static extern bool SetProcessAffinityMask(IntPtr hProcess, ulong dwProcessAffinityMask); public static extern bool SetProcessAffinityMask(IntPtr hProcess, ulong dwProcessAffinityMask);

View File

@@ -240,13 +240,17 @@ public static class WindowFunctions
if (_gameWindowHandle != IntPtr.Zero) if (_gameWindowHandle != IntPtr.Zero)
return _gameWindowHandle; return _gameWindowHandle;
var wnd = IntPtr.Zero; var wnd = IntPtr.Zero;
var consoleWnd = WinApi.GetConsoleWindow();
var currentProcessId = WinApi.GetCurrentProcessId();
while (true) while (true)
{ {
wnd = WinApi.FindWindowEx(IntPtr.Zero, wnd, GameWindowClass, _gameWindowTitle); wnd = WinApi.FindWindowEx(IntPtr.Zero, wnd, GameWindowClass, _gameWindowTitle);
if (wnd == IntPtr.Zero) if (wnd == IntPtr.Zero)
return IntPtr.Zero; return IntPtr.Zero;
if (wnd == consoleWnd)
continue;
WinApi.GetWindowThreadProcessId(wnd, out var pid); WinApi.GetWindowThreadProcessId(wnd, out var pid);
if (pid == WinApi.GetCurrentProcessId()) if (pid == currentProcessId)
break; break;
} }
_gameWindowHandle = wnd; _gameWindowHandle = wnd;