Compare commits

..
8 Commits
Author SHA1 Message Date
rmbgame 2ab26f7848 ready 1.0.3 2020-12-26 22:20:50 +08:00
rmbgame d646eacda1 ready 1.0.2 2020-12-21 21:54:23 +08:00
rmbgame fb029f729b ready 1.0.0 2020-12-21 21:47:08 +08:00
rmbgame 5ef6663269 delete ref lib 2020-12-21 21:36:17 +08:00
rmbgame 5c86b53000 ready 1.0.0 2020-12-17 12:10:47 +08:00
rmbgame efb6adbd9b delete ref lib 2020-12-16 10:38:03 +08:00
rmbgame 209202b5cf sync develop 2020-12-16 10:36:52 +08:00
rmbgame c0a081e226 delete ref lib 2020-12-16 10:34:52 +08:00
36 changed files with 242 additions and 427 deletions
+5 -35
View File
@@ -13,25 +13,12 @@ namespace SteamTool.Core
{
public class HostsService
{
public readonly static string HostsPath = @$"{Environment.SystemDirectory}\drivers\etc\hosts";
public readonly static string HostsPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.System)}\\drivers\\etc\\hosts";
static HostsService()
{
if (!File.Exists(HostsPath))
{
using var fs = File.Create(HostsPath);
fs.Close();
}
}
public OperationResult<List<string>> ReadHostsAllLines()
{
var result = new OperationResult<List<string>>(OperationResultType.Error, Resources.Hosts_ReadError);
if (!File.Exists(HostsPath))
{
result.Message = "hosts file was not found";
return result;
}
try
{
var dataLines = File.ReadAllLines(HostsPath).ToList();
@@ -61,11 +48,7 @@ namespace SteamTool.Core
public OperationResult UpdateHosts(string ip, string domain)
{
var result = new OperationResult(OperationResultType.Error, Resources.Hosts_WirteError);
if (!File.Exists(HostsPath))
{
result.Message = "hosts file was not found";
return result;
}
//操作前取消只读属性
File.SetAttributes(HostsPath, FileAttributes.Normal);
@@ -111,11 +94,7 @@ namespace SteamTool.Core
public OperationResult UpdateHosts(List<(string ip, string domain)> hosts)
{
var result = new OperationResult(OperationResultType.Error, Resources.Hosts_WirteError);
if (!File.Exists(HostsPath))
{
result.Message = "hosts file was not found";
return result;
}
if (hosts.Count == 0)
{
return result;
@@ -171,11 +150,7 @@ namespace SteamTool.Core
public OperationResult RemoveHosts(string ip, string domain)
{
var result = new OperationResult(OperationResultType.Error, Resources.Hosts_WirteError);
if (!File.Exists(HostsPath))
{
result.Message = "hosts file was not found";
return result;
}
//操作前取消只读属性
File.SetAttributes(HostsPath, FileAttributes.Normal);
@@ -216,11 +191,7 @@ namespace SteamTool.Core
public OperationResult RemoveHostsByTag()
{
var result = new OperationResult(OperationResultType.Error, Resources.Hosts_WirteError);
if (!File.Exists(HostsPath))
{
result.Message = "hosts file was not found";
return result;
}
//操作前取消只读属性
File.SetAttributes(HostsPath, FileAttributes.Normal);
@@ -257,7 +228,6 @@ namespace SteamTool.Core
return result;
}
public void StartNotepadEditHosts()
{
System.Diagnostics.Process.Start("notepad.exe", HostsPath);
+1 -1
View File
@@ -15,7 +15,7 @@ namespace SteamTool.Core
{
private readonly HttpClient _client = new HttpClient();
public string UserAgent { get; set; } = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko";
public string UserAgent { get; set; } = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36";
public string Accept { get; set; } = "application/json";
+1 -1
View File
@@ -23,7 +23,7 @@ namespace SteamTool.Core
Kernel.Bind<SteamToolService>().ToSelf();
Kernel.Bind<VdfService>().To<VdfService>();
Kernel.Bind<HttpServices>().ToConstant(new HttpServices());
Kernel.Bind<HostsService>().ToConstant(new HostsService());
Kernel.Bind<HostsService>().To<HostsService>();
}
public TInterface Get<TInterface>()
Binary file not shown.
Binary file not shown.
+1
View File
@@ -2,6 +2,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
ShutdownMode="OnExplicitShutdown"
xmlns:converters="http://schemes.grabacr.net/winfx/2015/personal/converters">
<Application.Resources>
<ResourceDictionary>
+2 -9
View File
@@ -68,7 +68,6 @@ namespace SteamTools
}
Logger.EnableTextLog = true;
#endif
App.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
DispatcherHelper.UIDispatcher = this.Dispatcher;
if (e.Args.ContainsArg("-log"))
@@ -88,11 +87,6 @@ namespace SteamTools
WindowService.Current.AddTo(this).Initialize();
ProxyService.Current.Initialize();
SteamConnectService.Current.Initialize();
AuthService.Current.Initialize();
if (GeneralSettings.IsAutoCheckUpdate)
{
AutoUpdateService.Current.CheckUpdate();
}
//托盘加载
TaskbarService.Current.Taskbar = (TaskbarIcon)FindResource("Taskbar");
@@ -141,7 +135,7 @@ namespace SteamTools
catch (Exception ex)
{
Debug.WriteLine(ex);
MessageBox.Show(ex.Message, $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
MessageBox.Show(ex.Message, "Error");
}
Current.Shutdown();
@@ -158,8 +152,8 @@ namespace SteamTools
//TaskbarService.Current.Taskbar.Icon = null; //避免托盘图标没有自动消失
TaskbarService.Current.Taskbar.Icon.Dispose();
}
this.compositeDisposable.Dispose();
base.OnExit(e);
this.compositeDisposable.Dispose();
}
private void ProcessCommandLineParameter(string[] args)
@@ -178,7 +172,6 @@ namespace SteamTools
}
if (args.ContainsArg("-app", out int appid))
{
App.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
ThemeService.Current.Register(this, Theme.Windows, Accent.Windows);
new SettingsPageViewModel();
WindowService.Current.AddTo(this).Initialize(appid);
+6 -6
View File
@@ -339,9 +339,9 @@ namespace SteamTools.Models
Created = new DateTime(t).ToLocalTime();
break;
//case "autorefresh":
// _autoRefresh = reader.ReadElementContentAsBoolean();
// break;
case "autorefresh":
_autoRefresh = reader.ReadElementContentAsBoolean();
break;
case "allowcopy":
_allowCopy = reader.ReadElementContentAsBoolean();
@@ -446,9 +446,9 @@ namespace SteamTools.Models
writer.WriteValue(Convert.ToInt64((this.Created.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalMilliseconds));
writer.WriteEndElement();
//writer.WriteStartElement("autorefresh");
//writer.WriteValue(this.AutoRefresh);
//writer.WriteEndElement();
writer.WriteStartElement("autorefresh");
writer.WriteValue(this.AutoRefresh);
writer.WriteEndElement();
//
writer.WriteStartElement("allowcopy");
writer.WriteValue(this.AllowCopy);
Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

+3 -3
View File
@@ -45,7 +45,7 @@ namespace SteamTools.Services
#endregion
private BindingList<WinAuthAuthenticator> _Authenticators = new BindingList<WinAuthAuthenticator>();
private BindingList<WinAuthAuthenticator> _Authenticators;
public BindingList<WinAuthAuthenticator> Authenticators
{
@@ -74,7 +74,7 @@ namespace SteamTools.Services
WindowService.Current.MainWindow.Dialog($"令牌同步服务器失败,错误信息:{ex.Message}");
}
}
else
else
{
Authenticators = new BindingList<WinAuthAuthenticator>();
}
@@ -533,7 +533,7 @@ namespace SteamTools.Services
}
if (reader.Name == "WinAuthAuthenticator")
{
var wa = new WinAuthAuthenticator() { AutoRefresh = false };
var wa = new WinAuthAuthenticator();
wa.ReadXml(reader, null);
list.Add(wa);
}
+1 -1
View File
@@ -83,7 +83,7 @@ namespace SteamTools.Services
public async void DownloadUpdate(GithubReleaseModel model)
{
if (WindowService.Current.ShowDialogWindow($"检测到新版本更新内容:{model.body}\r\n是否立即更新?", $"{ProductInfo.Title} | 更新提示") == true)
if (WindowService.Current.MainWindow.Dialog($"检测到新版本更新内容:{model.body}\r\n是否立即更新?", $"{ProductInfo.Title} | 更新提示") == true)
{
//var name = model.assets.FirstOrDefault()?.name;
var name = Path.Combine(AppContext.BaseDirectory, @$"{ProductInfo.Title} {model.version}.zip");
+3 -6
View File
@@ -49,8 +49,7 @@ new ProxyDomainModel{
Index=0,
Name=Resources.SteamCommunity,
Domains = new List<string>{"steamcommunity.com" },
//ToDomain = "steamcommunity-a.akamaihd.net",
ToDomain = "steampowered.com",
ToDomain = "steamcommunity-a.akamaihd.net",
Hosts = new List<string>{ "steamcommunity.com", "www.steamcommunity.com"},
DomainTag = DomainTag.SteamCommunity,
IsEnable= true,
@@ -59,8 +58,7 @@ new ProxyDomainModel{
Index=1,
Name=Resources.SteamStore,
Domains = new List<string>{"steampowered.com" },
//ToDomain = "steamstore-a.akamaihd.net",
ToDomain = "steampowered.com",
ToDomain = "steamstore-a.akamaihd.net",
Hosts = new List<string>{ "store.steampowered.com", "api.steampowered.com"},
DomainTag = DomainTag.SteamStore,
IsEnable= false,
@@ -79,8 +77,7 @@ new ProxyDomainModel{
Index=3,
Name=Resources.SteamChat,
Domains = new List<string>{"steam-chat.com" },
//ToDomain = "steamstore-a.akamaihd.net",
ToDomain = "steampowered.com",
ToDomain = "steamstore-a.akamaihd.net",
Hosts = new List<string>{ "steam-chat.com"},
DomainTag = DomainTag.SteamChat,
IsEnable= false,
-3
View File
@@ -70,9 +70,6 @@ namespace SteamTools.Services
var window = new MessageDialog { DataContext = dialog };
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.ShowDialog();
dialog.Topmost = true;
dialog.Activate();
dialog.Topmost = false;
return dialog.DialogResult;
}
+1 -6
View File
@@ -40,9 +40,7 @@
<PackageId />
<Version>1.0.3.2</Version>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>1.0.3</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net472|AnyCPU'">
@@ -285,9 +283,6 @@
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Views\Pages\SteamIdleCardPage.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Views\Pages\SteamAppPage.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
@@ -46,6 +46,9 @@ namespace SteamTools.ViewModels
CanExecuteFunc = () => true,
CommandAction = () =>
{
App.Current.MainWindow = WindowService.Current.GetMainWindow();
//if (!App.Current.MainWindow.IsVisible)
// App.Current.MainWindow.Show();
var mainWindow = (WindowService.Current.MainWindow as MainWindowViewModel);
mainWindow.IsVisible = true;
}
+14 -11
View File
@@ -125,19 +125,22 @@ namespace SteamTools.ViewModels
if (!this.IsInitialized)
{
base.Initialize();
await Task.Run(async () =>
foreach (var item in this.TabItems)
{
foreach (var item in this.TabItems)
if (item == SteamAppPage)
continue;
await item.Initialize().ContinueWith(s =>
{
if (item == SteamAppPage)
continue;
await item.Initialize().ContinueWith(s =>
{
Logger.Error(s.Exception);
WindowService.Current.ShowDialogWindow(s.Exception.Message);
}, TaskContinuationOptions.OnlyOnFaulted).ContinueWith(s => s.Dispose());
}
});
Logger.Error(s.Exception);
WindowService.Current.ShowDialogWindow(s.Exception.Message);
}, TaskContinuationOptions.OnlyOnFaulted).ContinueWith(s => s.Dispose());
}
AuthService.Current.Initialize();
if (GeneralSettings.IsAutoCheckUpdate)
{
AutoUpdateService.Current.CheckUpdate();
}
this.IsInitialized = true;
StatusService.Current.Set(Resources.Ready);
@@ -26,6 +26,21 @@ namespace SteamTools.ViewModels
protected set { throw new NotImplementedException(); }
}
private BindingList<WinAuthAuthenticator> _Authenticators;
public BindingList<WinAuthAuthenticator> Authenticators
{
get => this._Authenticators;
set
{
if (this._Authenticators != value)
{
this._Authenticators = value;
this.RaisePropertyChanged();
}
}
}
public bool _IsEdit;
public bool IsEdit
{
@@ -40,16 +55,10 @@ namespace SteamTools.ViewModels
}
}
public LocalAuthPageViewModel()
{
//AuthService.Current.Subscribe(nameof(AuthService.Current.Authenticators),
// () => { Authenticators = new BindingList<WinAuthAuthenticator>(AuthService.Current.Authenticators); }).AddTo(this);
}
public void ImageDelete_Click(WinAuthAuthenticator auth)
{
AuthService.Current.Authenticators.Remove(auth);
if (AuthService.Current.Authenticators.Count == 0)
Authenticators.Remove(auth);
if (Authenticators.Count == 0)
{
AuthSettings.Authenticators.Value = null;
IsEdit = false;
@@ -85,6 +94,12 @@ namespace SteamTools.ViewModels
TaskbarService.Current.Notify("已复制令牌");
}
internal async override Task Initialize()
{
AuthService.Current.Subscribe(nameof(AuthService.Current.Authenticators),
() => { Authenticators = AuthService.Current.Authenticators; }).AddTo(this);
await Task.CompletedTask;
}
public void AddAuth_Click()
{
@@ -93,7 +108,7 @@ namespace SteamTools.ViewModels
public void EditAuth_Click()
{
if (AuthService.Current.Authenticators == null || !AuthService.Current.Authenticators.Any())
if (Authenticators == null || !Authenticators.Any())
{
StatusService.Current.Notify("没有可编辑的令牌");
return;
@@ -101,7 +116,7 @@ namespace SteamTools.ViewModels
this.IsEdit = !IsEdit;
if (!IsEdit)
{
AuthSettings.Authenticators.Value = AuthService.ConvertJsonAuthenticator(AuthService.Current.Authenticators.ToList()).CompressString();
AuthSettings.Authenticators.Value = AuthService.ConvertJsonAuthenticator(Authenticators.ToList()).CompressString();
}
}
@@ -22,121 +22,83 @@
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<DockPanel Margin="8">
<TextBlock DockPanel.Dock="Top" Text="{Binding Resources.AboutUpdateHistory, Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
<ScrollViewer Padding="8" VerticalScrollBarVisibility="Auto">
<DockPanel>
<TextBlock DockPanel.Dock="Top" Text="{Binding Resources.AboutUpdateHistory, Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{DynamicResource SettingsHeaderTextStyleKey}" />
<Border Grid.Column="1">
<FlowDocumentScrollViewer Padding="0,-18,0,0"
<Border Grid.Column="1">
<FlowDocumentScrollViewer Padding="0,-18,0,0"
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto">
<FlowDocument FontSize="12"
<FlowDocument FontSize="12"
Foreground="{DynamicResource ForegroundBrushKey}"
FontFamily="Meiryo UI"
TextAlignment="Left"
MaxPageWidth="900">
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.3" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2020-12-26" FontSize="10" />
<LineBreak />
<Run Text="更新内容"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增pixiv本地反代服务支持" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增在欢迎页steam昵称后显示steam的登陆区域" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="添加steam图片修复的本地反代支持" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复最小化恢复时UI边框错位的BUG"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复令牌编辑和导入时出现的非空报错"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="帐户切换功能的最近登陆时间从北京时间改为当前系统时区时间"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复一个因为DNS解析错误会导致程序内存溢出闪退的BUG"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile请先在SDA移除加密"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修改初始化的方式和steam api的连接逻辑来避免steam游戏掉帧的BUG"></Run>
<LineBreak/>
<LineBreak />
<Run Text="已知的未修复问题"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="部分用户无法加载游戏列表,无法复现,原因暂时不明。(也可能是加载太慢,过半小时才能加载出来)" />
</Paragraph>
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.2" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2020-12-21" FontSize="10" />
<LineBreak />
<Run Text="更新内容"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="更新了由Benares制作的图标" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增帐户切换删除功能" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="添加github图片资源文件代理服务与discord代理服务支持" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="因为有问题暂时去掉了GOG Galaxy代理选项"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复一个会导致程序启动没有反应的bug"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复托盘菜单steam昵称过长ui错位bug"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增steam启动参数设置"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增启动时程序最小化到托盘菜单设置"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增捐助列表的展示"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增工具自动更新功能"></Run>
<LineBreak />
<LineBreak />
<Run Text="已知的未修复问题"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="(严重)经反馈,程序运行时可能会影响部分steam游戏掉帧,GPU占用率变低,这个BUG目前在作者的机器上无法复现所以暂时没有修复,如果你遇到这个问题可以手动关闭steam++解决。" />
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="程序在高DPI缩放分辨率下可能会UI布局错位,目前暂时拖动程序可恢复。" />
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="部分用户无法加载游戏列表,无法复现,原因暂时不明。" />
</Paragraph>
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.0" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2020-12-14" FontSize="10" />
<LineBreak />
<Run Text="发布第一个版本" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="主要功能:社区反代,帐户切换,成就解锁,本地令牌。"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="次要功能:强制无边框窗口化以及CSGO VAC屏蔽修复。"></Run>
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Border>
</DockPanel>
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.2" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2020-12-21" FontSize="10" />
<LineBreak />
<Run Text="更新内容"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="更新了由Benares制作的图标" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增帐户切换删除功能" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="添加github图片资源文件代理服务与discord代理服务支持" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="因为有问题暂时去掉了GOG Galaxy代理选项"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复一个会导致程序启动没有反应的bug"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复托盘菜单steam昵称过长ui错位bug"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增steam启动参数设置"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增启动时程序最小化到托盘菜单设置"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增捐助列表的展示"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增工具自动更新功能"></Run>
<LineBreak />
<LineBreak />
<Run Text="已知的未修复问题"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="(严重)经反馈,程序运行时可能会影响部分steam游戏掉帧,GPU占用率变低,这个BUG目前在作者的机器上无法复现所以暂时没有修复,如果你遇到这个问题可以手动关闭steam++解决。" />
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="程序在高DPI缩放分辨率下可能会UI布局错位,目前暂时拖动程序可恢复。" />
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="部分用户无法加载游戏列表,无法复现,原因暂时不明。" />
</Paragraph>
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.0" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2020-12-14" FontSize="10" />
<LineBreak />
<Run Text="发布第一个版本" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="主要功能:社区反代,帐户切换,成就解锁,本地令牌。"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="次要功能:强制无边框窗口化以及CSGO VAC屏蔽修复。"></Run>
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Border>
</DockPanel>
</ScrollViewer>
</UserControl>
@@ -20,6 +20,8 @@ namespace SteamTools.Views.Content
/// </summary>
public partial class AboutUpdateHistory : UserControl
{
private const string UpdateLogText = "";
public AboutUpdateHistory()
{
InitializeComponent();
@@ -136,7 +136,7 @@
</Button>
</StackPanel>
<TextBlock Style="{StaticResource DetailTextStyleKey}" Margin="20,6,0,0">
<Run Text="*置于壁纸层的游戏可能会无法操控,这个问题可以解决但是目前开发精力不在这,目前这个功能就这样了。游戏结束后桌面会依然留下冻结的画面,这时可以点击刷新壁纸来恢复默认壁纸。"/>
<Run Text="*置于壁纸层的游戏可能会无法操控,这个问题可以解决但是目前发开精力不在这,目前这个功能就这样了。游戏结束后桌面会依然留下冻结的画面,这时可以点击刷新壁纸来恢复默认壁纸。"/>
<Run Text="并且将窗口放置于桌面壁纸层功能与Wallpaper Engine和其它动态桌面软件不兼容,使用时注意关掉Wallpaper Engine等软件。"/>
</TextBlock>
<Rectangle Style="{DynamicResource SeparatorStyleKey}" />
-3
View File
@@ -175,9 +175,6 @@
<DataTemplate DataType="{x:Type vm:SteamAccountPageViewModel}">
<pages:SwitchSteamAccountPage />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SteamIdlePageViewModel}">
<pages:SteamIdleCardPage />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:CommunityProxyPageViewModel}">
<pages:CommunityProxyPage />
</DataTemplate>
+1 -1
View File
@@ -17,7 +17,7 @@ using MetroRadiance.UI;
namespace SteamTools.Views.Pages
{
/// <summary>
/// AboutPage.xaml 的交互逻辑
/// SwitchTheme.xaml 的交互逻辑
/// </summary>
public partial class AboutPage : UserControl
{
@@ -16,7 +16,7 @@ using System.Windows.Shapes;
namespace SteamTools.Views.Pages
{
/// <summary>
/// ArchiSteamFarmPlusPage.xaml 的交互逻辑
/// SwitchSteamAccount.xaml 的交互逻辑
/// </summary>
public partial class ArchiSteamFarmPlusPage : UserControl
{
@@ -114,13 +114,14 @@
Style="{DynamicResource SeparatorRectangleStyleKey}" />
</StackPanel>
<ListBox DockPanel.Dock="Bottom"
IsEnabled="{Binding ElementName=service,Path=IsChecked,Mode=OneWay,Converter={StaticResource ReverseBooleanConverter}}"
BorderThickness="0"
Style="{StaticResource MetroListBox}"
ItemsSource="{Binding ProxyDomains.Value,Source={x:Static services:ProxyService.Current}, Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Height="30" ToolTip="{Binding DomainTag}">
<CheckBox HorizontalAlignment="Left" IsEnabled="{Binding ElementName=service,Path=IsChecked,Mode=OneWay,Converter={StaticResource ReverseBooleanConverter}}"
<CheckBox HorizontalAlignment="Left"
Content="{Binding Name}"
IsChecked="{Binding IsEnable}">
<i:Interaction.Triggers>
@@ -17,7 +17,7 @@ using MetroRadiance.UI;
namespace SteamTools.Views.Pages
{
/// <summary>
/// GameRelatedPage.xaml 的交互逻辑
/// SwitchTheme.xaml 的交互逻辑
/// </summary>
public partial class GameRelatedPage : UserControl
{
+2 -2
View File
@@ -24,7 +24,7 @@
</ResourceDictionary>
</UserControl.Resources>
<Grid Margin="8,4,8,8">
<Grid Margin="8,0,8,8">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
@@ -75,7 +75,7 @@
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<ItemsControl
Foreground="{DynamicResource HighlightForegroundBrushKey}"
ItemsSource="{Binding Authenticators,Source={x:Static services:AuthService.Current},Mode=OneWay}">
ItemsSource="{Binding Authenticators,Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
+1 -1
View File
@@ -16,7 +16,7 @@ using System.Windows.Shapes;
namespace SteamTools.Views.Pages
{
/// <summary>
/// LocalAuthPage.xaml 的交互逻辑
/// SwitchSteamAccount.xaml 的交互逻辑
/// </summary>
public partial class LocalAuthPage : UserControl
{
@@ -17,7 +17,7 @@ using MetroRadiance.UI;
namespace SteamTools.Views.Pages
{
/// <summary>
/// OtherPlatformPage.xaml 的交互逻辑
/// SwitchTheme.xaml 的交互逻辑
/// </summary>
public partial class OtherPlatformPage : UserControl
{
+1 -1
View File
@@ -53,7 +53,7 @@
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto" Background="{DynamicResource ThemeBrushKey}">
VerticalScrollBarVisibility="Auto">
<StackPanel Margin="8,0,8,8">
<Panel.Resources>
<Style TargetType="{x:Type WrapPanel}">
+1 -1
View File
@@ -11,7 +11,7 @@ using MetroRadiance.UI;
namespace SteamTools.Views.Pages
{
/// <summary>
/// SettingsPage.xaml 的交互逻辑
/// SwitchTheme.xaml 的交互逻辑
/// </summary>
public partial class SettingsPage : UserControl
{
+1 -1
View File
@@ -16,7 +16,7 @@ using System.Windows.Shapes;
namespace SteamTools.Views.Pages
{
/// <summary>
/// SteamAppPage.xaml 的交互逻辑
/// SwitchSteamAccount.xaml 的交互逻辑
/// </summary>
public partial class SteamAppPage : UserControl
{
@@ -1,65 +0,0 @@
<UserControl x:Class="SteamTools.Views.Pages.SteamIdleCardPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:control="clr-namespace:SteamTools.Views.Pages"
xmlns:services="clr-namespace:SteamTools.Services"
mc:Ignorable="d"
d:DesignWidth="600"
d:DesignHeight="400">
<TabControl Grid.Row="1" Style="{StaticResource VerticalTabControlStyleKey}"
FontFamily="{DynamicResource DefaultFontFamilyKey}" FontSize="14">
<TabControl.Resources>
<Style x:Key="TabHeaderTextStyleKey"
TargetType="{x:Type TextBlock}">
<Setter Property="Foreground"
Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Foreground}" />
<Setter Property="Margin"
Value="14,0" />
<Setter Property="VerticalAlignment"
Value="Center" />
</Style>
</TabControl.Resources>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.Origin,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.Uplay,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.WinStore,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.GOG,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.Epic,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
</TabItem>
</TabControl>
</UserControl>
@@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MetroRadiance.UI;
namespace SteamTools.Views.Pages
{
/// <summary>
/// SteamIdleCardPage.xaml 的交互逻辑
/// </summary>
public partial class SteamIdleCardPage : UserControl
{
public SteamIdleCardPage()
{
InitializeComponent();
}
}
}
+1 -1
View File
@@ -255,7 +255,7 @@
Prompt="" />
<TextBlock Grid.Row="1" Grid.Column="0">
<Run Text="从files文件夹中,粘贴'SteamGuard-NNNNNNNN'的全部内容" />
<Run Text="从文件文件夹中,粘贴'SteamGuard-NNNNNNNN'的全部内容" />
</TextBlock>
<metro:PromptTextBox Grid.Row="1"
Grid.Column="1"
+64 -80
View File
@@ -2,94 +2,78 @@
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
namespace SteamTools.Win32
{
internal class WinInet
{
// For PInvoke: Initiates the enumeration of the cache groups in the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindFirstUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr FindFirstUrlCacheGroup(
int dwFlags,
int dwFilter,
IntPtr lpSearchCondition,
int dwSearchCondition,
ref long lpGroupId,
IntPtr lpReserved);
internal class WinInet
{
// For PInvoke: Initiates the enumeration of the cache groups in the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindFirstUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr FindFirstUrlCacheGroup(
int dwFlags,
int dwFilter,
IntPtr lpSearchCondition,
int dwSearchCondition,
ref long lpGroupId,
IntPtr lpReserved);
// For PInvoke: Retrieves the next cache group in a cache group enumeration
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindNextUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern bool FindNextUrlCacheGroup(
IntPtr hFind,
ref long lpGroupId,
IntPtr lpReserved);
// For PInvoke: Retrieves the next cache group in a cache group enumeration
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindNextUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern bool FindNextUrlCacheGroup(
IntPtr hFind,
ref long lpGroupId,
IntPtr lpReserved);
// For PInvoke: Releases the specified GROUPID and any associated state in the cache index file
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "DeleteUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern bool DeleteUrlCacheGroup(
long groupId,
int dwFlags,
IntPtr lpReserved);
// For PInvoke: Releases the specified GROUPID and any associated state in the cache index file
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "DeleteUrlCacheGroup",
CallingConvention = CallingConvention.StdCall)]
public static extern bool DeleteUrlCacheGroup(
long groupId,
int dwFlags,
IntPtr lpReserved);
// For PInvoke: Begins the enumeration of the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindFirstUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr FindFirstUrlCacheEntry(
[MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern,
IntPtr lpFirstCacheEntryInfo,
ref int lpdwFirstCacheEntryInfoBufferSize);
// For PInvoke: Begins the enumeration of the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindFirstUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr FindFirstUrlCacheEntry(
[MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern,
IntPtr lpFirstCacheEntryInfo,
ref int lpdwFirstCacheEntryInfoBufferSize);
// For PInvoke: Retrieves the next entry in the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindNextUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern bool FindNextUrlCacheEntry(
IntPtr hFind,
IntPtr lpNextCacheEntryInfo,
ref int lpdwNextCacheEntryInfoBufferSize);
// For PInvoke: Retrieves the next entry in the Internet cache
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "FindNextUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern bool FindNextUrlCacheEntry(
IntPtr hFind,
IntPtr lpNextCacheEntryInfo,
ref int lpdwNextCacheEntryInfoBufferSize);
// For PInvoke: Removes the file that is associated with the source name from the cache, if the file exists
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "DeleteUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern bool DeleteUrlCacheEntry(
IntPtr lpszUrlName);
[DllImport("wininet.dll",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "InternetGetCookieEx",
CallingConvention = CallingConvention.StdCall)]
public static extern bool InternetGetCookieEx(
string url,
string cookieName,
StringBuilder cookieData,
ref int size,
int dwFlags,
IntPtr lpReserved);
}
// For PInvoke: Removes the file that is associated with the source name from the cache, if the file exists
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "DeleteUrlCacheEntryA",
CallingConvention = CallingConvention.StdCall)]
public static extern bool DeleteUrlCacheEntry(
IntPtr lpszUrlName);
}
}
+23 -33
View File
@@ -8,40 +8,31 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
## 已知的未修复问题
* (严重)经反馈,程序运行时可能会影响部分steam游戏掉帧,GPU占用率变低,这个BUG目前在作者的机器上无法复现所以暂时没有修复,如果你遇到这个问题可以手动关闭steam++解决。
* 程序在高DPI缩放分辨率下可能会UI布局错位,目前暂时拖动程序可恢复。
* 部分用户无法加载游戏列表,无法复现,原因暂时不明。
## 更新内容
### 1.0.3.2
一直在修BUG,下个版本开始要做新功能了。
```
新增pixiv本地反代服务支持
新增在欢迎页steam昵称后显示steam的登陆区域
添加steam图片修复的本地反代支持
修复最小化恢复时UI边框错位的BUG
修复令牌编辑和导入时出现的非空报错
帐户切换功能的最近登陆时间从北京时间改为当前系统时区时间
修复一个因为DNS解析错误会导致程序内存溢出闪退的BUG
SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile请先在SDA移除加密
修改初始化的方式和steam api的连接逻辑来避免steam游戏掉帧的BUG
解决程序最小化启动时弹窗报错
优化本地令牌的加载
```
### 1.0.2
```
更新了由Benares制作的图标
新增帐户切换删除功能
添加github图片资源文件代理服务与discord代理服务支持
因为有问题暂时去掉了GOG Galaxy代理选项
修复一个会导致程序启动没有反应的bug
修复托盘菜单steam昵称过长ui错位bug
新增steam启动参数设置
新增启动时程序最小化到托盘菜单设置
新增捐助列表的展示
新增工具自动更新功能
更新了由Benares制作的图标
新增帐户切换删除功能
添加github图片资源文件代理服务与discord代理服务支持
因为有问题暂时去掉了GOG Galaxy代理选项
修复一个会导致程序启动没有反应的bug
修复托盘菜单steam昵称过长ui错位bug
新增steam启动参数设置
新增启动时程序最小化到托盘菜单设置
新增捐助列表的展示
新增工具自动更新功能
```
## 工具介绍
@@ -49,7 +40,8 @@ SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile
`Steam++`是一个包含多种Steam工具功能的工具箱,开源发布于[Github](https://github.com/rmbadmin/SteamTools),如果您对发布的二进制文件不放心,可以自行下载源码编译运行。
此工具的大部分功能都是需要您下载安装Steam才能使用。
工具预计将整合进大部分常用的Steam相关工具,并且尽力做到比原工具更好用,在各种整合添加功能的同时,也会注意体积尽量的控制到最小。
查毒链接[https://www.virustotal.com/gui/file/3889babb8b0dcf79b16045679a5cb57a70cc6d60447078fb65b8a8979da2f14d/detection](https://www.virustotal.com/gui/file/3889babb8b0dcf79b16045679a5cb57a70cc6d60447078fb65b8a8979da2f14d/detection)
虽然没有什么杀毒软件报毒,但是使用过程中可能遇到windows defender误报,您可以选择添加信任。
软件截图
[hide]
[attachimg]1228394[/attachimg]
@@ -124,11 +116,9 @@ SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile
> [Github](https://github.com/rmbadmin/SteamTools/releases)
> 分流下载:
> [hide]
> [蓝奏云](https://wws.lanzous.com/i6WLTjr4lsj)
> [百度云](https://pan.baidu.com/s/1v5UGz-VlmsFS-7ISpcXnIw)
> 提取码:33zw
> [蓝奏云](https://wws.lanzous.com/ihW80jkylcb)
> [百度云](https://pan.baidu.com/s/1um0YboiVGZTs4rC6uCCa1g)
> 提取码:pz3t
> [/hide]
> EXE 大小:4.74MB
> MD5:D658FB5F6E142CB92DAB73BEF929327D
> [查毒链接](https://www.virustotal.com/gui/file/1073fc19c3208228b1a00eb9bceab771cbf77ffbf1a6c2de666a0e9a4967db60/detection)
虽然没有什么杀毒软件报毒,但是使用过程中可能遇到windows defender误报,您可以选择添加信任。
> EXE 大小:4.85MB
> MD5:F819FEAA3463E0B9DED7E94AB87088B0