mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-18 14:23:51 +02:00
separate isGameRunning and isGmaeNoVR
This commit is contained in:
43
VRCX.cs
43
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<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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user