From 27464ca65f29e6362593dfe6c987936969f67c16 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Fri, 31 Oct 2025 01:51:26 +1100 Subject: [PATCH] Fix Electron checking if game is running --- Dotnet/AppApi/Cef/GameHandler.cs | 4 +++- Dotnet/AutoAppLaunchManager.cs | 7 ++++++- Dotnet/ProcessMonitor.cs | 9 ++++++++- Dotnet/StartupArgs.cs | 10 ++++++++-- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Dotnet/AppApi/Cef/GameHandler.cs b/Dotnet/AppApi/Cef/GameHandler.cs index a91af0fc..066e782c 100644 --- a/Dotnet/AppApi/Cef/GameHandler.cs +++ b/Dotnet/AppApi/Cef/GameHandler.cs @@ -53,9 +53,11 @@ namespace VRCX public override int QuitGame() { - var processes = Process.GetProcessesByName("vrchat"); + var processes = Process.GetProcessesByName("VRChat"); if (processes.Length == 1) processes[0].Kill(); + foreach (var process in processes) + process.Dispose(); return processes.Length; } diff --git a/Dotnet/AutoAppLaunchManager.cs b/Dotnet/AutoAppLaunchManager.cs index 35fa9354..65bd6b44 100644 --- a/Dotnet/AutoAppLaunchManager.cs +++ b/Dotnet/AutoAppLaunchManager.cs @@ -288,7 +288,12 @@ namespace VRCX try { var processName = Path.GetFileNameWithoutExtension(filePath); - return Process.GetProcessesByName(processName).Length != 0; + var processes = Process.GetProcessesByName(processName); + var isProcessRunning = processes.Length != 0; + foreach (var process in processes) + process.Dispose(); + + return isProcessRunning; } catch (Exception ex) { diff --git a/Dotnet/ProcessMonitor.cs b/Dotnet/ProcessMonitor.cs index 0871b417..4a75f90a 100644 --- a/Dotnet/ProcessMonitor.cs +++ b/Dotnet/ProcessMonitor.cs @@ -120,7 +120,14 @@ namespace VRCX return false; if (ensureCheck && process.Process == null) - return Process.GetProcessesByName(processName).FirstOrDefault() != null; + { + var processes = Process.GetProcessesByName(processName); + var isProcessRunning = processes.Length > 0; + foreach (var proc in processes) + proc.Dispose(); + + return isProcessRunning; + } return process.IsRunning; diff --git a/Dotnet/StartupArgs.cs b/Dotnet/StartupArgs.cs index c892dc8e..9d9d29a3 100644 --- a/Dotnet/StartupArgs.cs +++ b/Dotnet/StartupArgs.cs @@ -121,6 +121,7 @@ namespace VRCX private static bool IsDuplicateProcessRunning(VrcxLaunchArguments launchArguments) { var processes = Process.GetProcessesByName("VRCX"); + var isDuplicateProcessRunning = false; foreach (var process in processes) { if (process.Id == Environment.ProcessId) @@ -145,10 +146,15 @@ namespace VRCX var processArguments = ParseArgs(commandLine.Split(' ')); if (processArguments.ConfigDirectory == launchArguments.ConfigDirectory) - return true; + { + isDuplicateProcessRunning = true; + break; + } } + foreach (var process in processes) + process.Dispose(); - return false; + return isDuplicateProcessRunning; } private static void IPCToMain()