separate isGameRunning and isGmaeNoVR

This commit is contained in:
pypy
2020-10-25 18:59:57 +09:00
parent e9f65f4868
commit b15cf90a01
2 changed files with 31 additions and 21 deletions

43
VRCX.cs
View File

@@ -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<ManagementBaseObject>().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<ManagementBaseObject>().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)

View File

@@ -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 {