diff --git a/VRCX.cs b/VRCX.cs index a2832996..10c57bd8 100644 --- a/VRCX.cs +++ b/VRCX.cs @@ -46,31 +46,38 @@ namespace VRCX : string.Empty; } - public bool IsGameRunning() + public bool[] CheckGameRunning() { - IntPtr hwnd = WinApi.FindWindow("UnityWndClass", "VRChat"); - if (hwnd == IntPtr.Zero) - { - return false; - } + var isGameRunning = false; + var isGameNoVR = false; - String cmdline; - try + var hwnd = WinApi.FindWindow("UnityWndClass", "VRChat"); + if (hwnd != IntPtr.Zero) { - Int32 pid; - WinApi.GetWindowThreadProcessId(hwnd, out pid); - using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + pid)) - using (ManagementObjectCollection objects = searcher.Get()) + var cmdline = string.Empty; + try { - cmdline = objects.Cast().SingleOrDefault()?["CommandLine"]?.ToString(); + Int32 pid = 0; + WinApi.GetWindowThreadProcessId(hwnd, out pid); + using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + pid)) + using (ManagementObjectCollection objects = searcher.Get()) + { + cmdline = objects.Cast().SingleOrDefault()?["CommandLine"]?.ToString(); + } } - } - catch - { - return false; + catch + { + } + + isGameRunning = true; + isGameNoVR = cmdline.Contains("--no-vr"); } - return !cmdline.Contains("--no-vr"); + return new bool[] + { + isGameRunning, + isGameNoVR + }; } public void StartGame(string arguments) diff --git a/html/src/app.js b/html/src/app.js index d2f2003e..774e2bfe 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -3272,6 +3272,7 @@ CefSharp.BindObjectAsync( VRCX, nextRefresh: 0, isGameRunning: false, + isGameNoVR: false, appVersion: 'VRCX 2020.07.13', latestAppVersion: '', ossDialog: false, @@ -3378,11 +3379,12 @@ CefSharp.BindObjectAsync( } this.checkActiveFriends(); this.refreshGameLog(); - VRCX.IsGameRunning().then((running) => { - if (running !== this.isGameRunning) { - this.isGameRunning = running; + VRCX.CheckGameRunning().then(([isGameRunning, isGameNoVR]) => { + if (isGameRunning !== this.isGameRunning) { + this.isGameRunning = isGameRunning; Discord.SetTimestamps(Date.now(), 0); } + this.isGameNoVR = isGameNoVR; this.updateDiscord(); this.updateOpenVR(); }); @@ -5567,6 +5569,7 @@ CefSharp.BindObjectAsync( $app.methods.updateOpenVR = function () { if (this.openVR && + this.isGameNoVR === false && (this.isGameRunning || this.openVRAlways)) { VRCX.StartVR(); } else {