Fix Electron checking if game is running

This commit is contained in:
Natsumi
2025-10-31 01:51:26 +11:00
parent f434c83b0c
commit 27464ca65f
4 changed files with 25 additions and 5 deletions
+3 -1
View File
@@ -53,9 +53,11 @@ namespace VRCX
public override int QuitGame() public override int QuitGame()
{ {
var processes = Process.GetProcessesByName("vrchat"); var processes = Process.GetProcessesByName("VRChat");
if (processes.Length == 1) if (processes.Length == 1)
processes[0].Kill(); processes[0].Kill();
foreach (var process in processes)
process.Dispose();
return processes.Length; return processes.Length;
} }
+6 -1
View File
@@ -288,7 +288,12 @@ namespace VRCX
try try
{ {
var processName = Path.GetFileNameWithoutExtension(filePath); 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) catch (Exception ex)
{ {
+8 -1
View File
@@ -120,7 +120,14 @@ namespace VRCX
return false; return false;
if (ensureCheck && process.Process == null) 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; return process.IsRunning;
+8 -2
View File
@@ -121,6 +121,7 @@ namespace VRCX
private static bool IsDuplicateProcessRunning(VrcxLaunchArguments launchArguments) private static bool IsDuplicateProcessRunning(VrcxLaunchArguments launchArguments)
{ {
var processes = Process.GetProcessesByName("VRCX"); var processes = Process.GetProcessesByName("VRCX");
var isDuplicateProcessRunning = false;
foreach (var process in processes) foreach (var process in processes)
{ {
if (process.Id == Environment.ProcessId) if (process.Id == Environment.ProcessId)
@@ -145,10 +146,15 @@ namespace VRCX
var processArguments = ParseArgs(commandLine.Split(' ')); var processArguments = ParseArgs(commandLine.Split(' '));
if (processArguments.ConfigDirectory == launchArguments.ConfigDirectory) 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() private static void IPCToMain()