Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
rmbadmin committed Dec 13, 2022
1 parent b7606b2 commit b9e03e7
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/ST.Client.CommandLine/CommandLineHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ void MainHandlerByCLT_(Action? onInitStartuped, Func<string>? sendMessage = null
// -clt steam -account
var steamuser = new Command("steam", "Steam 相关操作");
steamuser.AddOption(new Option<string>("-account", "指定对应 Steam 用户名"));
steamuser.Handler = CommandHandler.Create(async (string account) =>
steamuser.Handler = CommandHandler.Create((string account) =>
{
if (!string.IsNullOrEmpty(account))
{
Expand All @@ -257,7 +257,7 @@ void MainHandlerByCLT_(Action? onInitStartuped, Func<string>? sendMessage = null
var currentuser = users.Where(s => s.AccountName == account).FirstOrDefault();
await steamService.ShutdownSteamAsync();
steamService.TryKillSteamProcess();
if (currentuser != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
using System.Application.UI;
using System.Application.UI.Resx;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Management;
using System.Net;
using System.Net.Http;
using System.Runtime.Versioning;
Expand Down Expand Up @@ -143,6 +145,43 @@ public int GetSteamProcessPid()
/// <returns></returns>
private Process? GetSteamProces() => GetSteamProcesses().FirstOrDefault();

public bool IsSteamChinaLauncher()
{
if (OperatingSystem2.IsWindows())
{
var process = GetSteamProces();

if (process != null)
{
try
{
return GetCommandLineArgsCore().Contains("-steamchina", StringComparison.OrdinalIgnoreCase);
}
catch (Win32Exception ex) when ((uint)ex.ErrorCode == 0x80004005)
{
// 没有对该进程的安全访问权限。
return false;
}
catch (InvalidOperationException)
{
// 进程已退出。
return false;
}
}
string GetCommandLineArgsCore()
{
using (var searcher = new ManagementObjectSearcher(
"SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + process.Id))
using (var objects = searcher.Get())
{
var @object = objects.Cast<ManagementBaseObject>().SingleOrDefault();
return @object?["CommandLine"]?.ToString() ?? "";
}
}
}
return false;
}

public void StartSteam(string? arguments = null)
{
if (!string.IsNullOrWhiteSpace(SteamProgramPath) && File.Exists(SteamProgramPath))
Expand Down
2 changes: 2 additions & 0 deletions src/ST.Client/Services/ISteamService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ public interface ISteamService
/// <returns></returns>
int GetSteamProcessPid();

bool IsSteamChinaLauncher();

/// <summary>
/// 启动 Steam
/// </summary>
Expand Down
3 changes: 1 addition & 2 deletions src/ST.Client/Services/Mvvm/SteamConnectService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,9 @@ public void Initialize()
CurrentSteamUser = await swWebService.GetUserInfo(id);
CurrentSteamUser.AvatarStream = httpService.GetImageAsync(CurrentSteamUser.AvatarFull, ImageChannelType.SteamAvatars);
//AvatarPath = ImageSouce.TryParse(await CurrentSteamUser.AvatarStream, isCircle: true);
CurrentSteamUser.IPCountry = swLocalService.GetIPCountry();
IsSteamChinaLauncher = swLocalService.IsSteamChinaLauncher();
IsSteamChinaLauncher = stmService.IsSteamChinaLauncher();
var steamServerTime = ((long)swLocalService.GetServerRealTime()).ToDateTimeOffsetS();
//var steamRunTime = swLocalService.GetSecondsSinceAppActive();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ private async void ReStartSteamByUser(SteamUser? user = null)
foreach (var item in SteamUsers.Where(x => x.MostRecent))
item.MostRecent = false;

await steamService.ShutdownSteamAsync();
steamService.TryKillSteamProcess();

if (user != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public async Task SaveSteamEditedApps()
{
if (await MessageBox.ShowAsync(AppResources.SaveEditedAppInfo_RestartSteamTip, ThisAssembly.AssemblyTrademark, MessageBox.Button.OKCancel) == MessageBox.Result.OK)
{
await stmService.ShutdownSteamAsync();
stmService.TryKillSteamProcess();
stmService.StartSteamWithParameter();
}
Toast.Show(AppResources.SaveEditedAppInfo_SaveToSteamSuccess);
Expand Down

0 comments on commit b9e03e7

Please sign in to comment.