Compare commits

...
8 Commits
Author SHA1 Message Date
rmbgame 9fbe6408ab 修复某些情况下开机自启失效问题
修复配置文件加载时提示根元素错误
配置文件备份机制完善
2021-01-29 19:08:11 +08:00
rmbgame c8ea806360 关于里加入FAQ 2021-01-28 23:11:18 +08:00
rmbgame a8b0f9877c 新增账号切换登录新账号功能
账号切换可以实时刷新新登录的账号了
2021-01-28 20:08:43 +08:00
rmbgame d82f94f95d 修改谷歌验证码代理方式为全局跳转www.recaptcha.net 2021-01-27 19:06:00 +08:00
rmbgame a40fb84783 记录更详细错误日志 2021-01-27 14:34:34 +08:00
rmbgame c9cbf696e4 新增Steam图片上传的代理选项 2021-01-25 17:22:43 +08:00
rmbgame cc86913b72 修复某些情况下配置读取错误 2021-01-23 00:02:17 +08:00
rmbgame ba02250f61 update readme 2021-01-22 23:32:03 +08:00
39 changed files with 1386 additions and 996 deletions
+6
View File
@@ -12,6 +12,12 @@
[![GitHub Fork](https://img.shields.io/github/forks/rmbadmin/SteamTools?style=flat-square)](https://github.com/rmbadmin/SteamTools/network/members)
![GitHub repo size](https://img.shields.io/github/repo-size/rmbadmin/SteamTools?style=flat-square&color=3cb371)
# Steam++
[English](https://github.com/rmbadmin/SteamTools/blob/develop/README.en.md)
[简体中文](https://github.com/rmbadmin/SteamTools/blob/develop/README.md)
## Samples
-------
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/s.png)
+11 -4
View File
@@ -15,11 +15,16 @@
# Steam++
[English](https://github.com/rmbadmin/SteamTools/blob/develop/README.en.md)
[简体中文](https://github.com/rmbadmin/SteamTools/blob/develop/README.md)
## 效果展示
-------
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/s.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/e.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/e2.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/e-1.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/t.png)
------
@@ -30,7 +35,6 @@
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/1.png)
---
### 2. 快速切换当前PC已经记住登陆的Steam账号
该功能是读取Steam路径下存储的本地用户登录记录直接展示操作,可以多账号切换无需重新输入密码和令牌。
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/2.png)
---
@@ -41,14 +45,17 @@
### 4. Steam本地两步身份验证器
功能参考[WinAuth](https://github.com/winauth/winauth)开发,可以使您不用启动移动版Steam App也能查看您的令牌,功能类似的软件有[WinAuth](https://github.com/winauth/winauth)、[SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator)。
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/4.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/4.png)
本地令牌交易市场报价确认
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/4-1.png)
---
### 5. 一些游戏工具
目前已有强制游戏无边框窗口化,CSGO修复VAC屏蔽。
这一块是随缘做一些我经常用或者闲着没事捣鼓的功能。
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/5.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/6.png)
![](https://raw.githubusercontent.com/rmbadmin/SteamTools/develop/resources/5-1.png)
---
## 预计后续添加的功能
+23 -70
View File
@@ -13,71 +13,21 @@ Steam++只在keylol论坛与github发布,为了账号安全,请不要到其
## 更新内容
### 1.0.6
### 1.1.0
```
修改了用户信息获取的api为steam官方社区api(但是没有启动软件的自动代理服务的话依然加载不出头像。)
新增启用日志记录设置项(反馈bug时一起提交方便排查问题)
修复twitch反代聊天连接错误和直播视频无法观看
放宽令牌同步时网络请求超时时间以降低令牌同步时提示超时概率
修改生成的cer证书编码格式为utf8,解决火狐无法导入cer证书
增加80端口反代,以便自动跳转http访问到https请求上
本地令牌市场交易确认功能上线啦(目前功能较简单,待完善)
新增内置steam史低查询脚本
新增Steam启动消息通知设置项
新增github gist代理服务支持
修复某些情况配置文件读取出错
修复discord更新下载和图片失效
修复twitch聊天频道连接失效
修复gihub头像资源加载失败
新增pixiv图片的代理选项来修复pixiv图片失效
修改了本地反代解析域名的方式,这样出问题以后可以直接热更新
还修复了一些没有记下来的bug...
```
### 1.0.5
```
紧急修复因为第三方steamdb api挂掉导致程序崩溃(第三方api确实还是不太靠谱,考虑之后换回steam官方api)
优化反代过程的逻辑
增加启动时自动运行Steam的设置项
新增令牌刷新功能
帐户切换增加了离线模式启动的选项
修复刷新游戏缓存按钮程序闪退BUG
还修复了一些没有记下来的小错误...
```
### 1.0.4
```
此版本修改了配置文件的保存读取功能,会无法读取1.0.4版本以前的配置文件包括令牌数据。(可以通过设置-令牌设置-导入旧版本Steam++令牌数据按钮来恢复旧版本令牌数据)
还原steam社区反代上游地址修复部分请求会提示需要登录的问题
新增令牌导入导出备份功能
新增令牌可以选择保存在程序根目录下的设置选项(方便备份)
修改了自动更新的提示方式
自动更新可以自动覆盖升级,不再需要手动替换
修复令牌无法保存的问题
```
### 1.0.3.3
```
新增pixiv本地反代服务支持
新增在欢迎页steam昵称后显示steam的登陆区域
添加steam图片修复的本地反代支持
修复最小化恢复时UI边框错位的BUG
修复令牌编辑和导入时出现的非空报错
帐户切换功能的最近登陆时间从北京时间改为当前系统时区时间
修复一个因为DNS解析错误会导致程序内存溢出闪退的BUG
SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile请先在SDA移除加密
修改初始化的方式和steam api的连接逻辑来避免steam游戏掉帧的BUG
解决程序最小化启动时弹窗报错
优化本地令牌的加载
修复托盘图标单击启动多个窗口
修复设置界面设置UI错位
修复成就窗口关闭游戏依然运行
修改steam社区商店图片代理上游地址为steampowered.com
```
### 1.0.2
```
更新了由Benares制作的图标
新增帐户切换删除功能
添加github图片资源文件代理服务与discord代理服务支持
因为有问题暂时去掉了GOG Galaxy代理选项
修复一个会导致程序启动没有反应的bug
修复托盘菜单steam昵称过长ui错位bug
新增steam启动参数设置
新增启动时程序最小化到托盘菜单设置
新增捐助列表的展示
新增工具自动更新功能
```
## 工具介绍
@@ -114,14 +64,17 @@ SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile
### 4. Steam本地两步身份验证器
功能参考[WinAuth](https://github.com/winauth/winauth)开发,可以使您不用启动移动版Steam App也能查看您的令牌,功能类似的软件有[WinAuth](https://github.com/winauth/winauth)、[SteamDesktopAuthenticator](https://github.com/Jessecar96/SteamDesktopAuthenticator)。
[attachimg]1228391[/attachimg]
[attachimg]1228391[/attachimg]
本地令牌交易市场报价确认
[attachimg]1262615[/attachimg]
### 5. 一些游戏工具
目前已有强制游戏无边框窗口化,CSGO修复VAC屏蔽。
这一块是随缘做一些我经常用或者闲着没事捣鼓的功能。
将任何游戏强制无边框窗口化
[attachimg]1228392[/attachimg]
[attachimg]1228392[/attachimg]
使任何窗口化游戏变成动态桌面壁纸(终于可以用《山》当壁纸了)
[attachimg]1228393[/attachimg]
@@ -159,11 +112,11 @@ SDA令牌导入不再支持导入加密文件,如果要导入加密的maFile
> [Github](https://github.com/rmbadmin/SteamTools/releases)
> 分流下载:
> [hide]
> [蓝奏云](https://wws.lanzous.com/i45yAkbbz9g)
> [百度云](https://pan.baidu.com/s/1qRnTuIjjM2FOfTrYHZxshg)
> 提取码:97c7
> [蓝奏云](https://wws.lanzous.com/icwdPkpnu1e)
> [百度云](https://pan.baidu.com/s/1EG8e1Oi4Mg2KCiF42oKnig)
> 提取码:stpp
> [/hide]
> EXE 大小:4.85MB
> MD5:7FC035E1F38E79569597A6A6DDDF279B
> [查毒链接](https://www.virustotal.com/gui/file/6d0a506044013d1cea7c2b4f7734f2405ad7ac6b1f5213abc68743f979acf51f/detection)
> EXE 大小:4.87MB
> MD5:8965D1A2EC7688F1EDEF3DA81667A009
> [查毒链接](https://www.virustotal.com/gui/file/9931d6034c3b8f6c362ecb991a21d205623734fbee201e62f813d05f50347e64/detection)
虽然没有什么杀毒软件报毒,但是使用过程中可能遇到windows defender误报,您可以选择添加信任。
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Before

Width:  |  Height:  |  Size: 427 KiB

After

Width:  |  Height:  |  Size: 427 KiB

+56
View File
@@ -302,5 +302,61 @@
"PayType": 1,
"Remark": "",
"PayTime": "2021-01-16 09:48:57"
},
{
"Name": "*圣",
"Amount": 10,
"OrderNumber": "",
"PayType": 1,
"Remark": "感谢开发出如此好用的工具,略表心意请笑纳",
"PayTime": "2021-01-23 00:04:36"
},
{
"Name": "Sheri",
"Amount": 10,
"OrderNumber": "",
"PayType": 2,
"Remark": "Sherry",
"PayTime": "2021-01-23 09:16:11"
},
{
"Name": "**志",
"Amount": 10,
"OrderNumber": "",
"PayType": 1,
"Remark": "谢谢开发出这么方便的软件(*`▽´*)",
"PayTime": "2021-01-24 10:40:50"
},
{
"Name": "匿名",
"Amount": 5,
"OrderNumber": "",
"PayType": 2,
"Remark": "From keylol",
"PayTime": "2021-01-25 04:01:59"
},
{
"Name": "**炜",
"Amount": 23.33,
"OrderNumber": "",
"PayType": 1,
"Remark": "更新很给力,支持一下,希望早日出挂卡功能",
"PayTime": "2021-01-27 23:08:25"
},
{
"Name": "匿名",
"Amount": 1,
"OrderNumber": "",
"PayType": 2,
"Remark": "加油加油",
"PayTime": "2021-01-28 11:11:38"
},
{
"Name": "*枫",
"Amount": 6.66,
"OrderNumber": "",
"PayType": 1,
"Remark": "",
"PayTime": "2021-01-28 16:42:49"
}
]

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB

File diff suppressed because it is too large Load Diff
@@ -22,6 +22,12 @@
<ProjectReference Include="..\SteamTool.Model\SteamTool.Model.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Interop.IWshRuntimeLibrary">
<HintPath>..\SteamTools\obj\x86\Debug\net472\Interop.IWshRuntimeLibrary.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
+5 -1
View File
@@ -99,7 +99,7 @@ namespace SteamTool.Core
if (File.Exists(SteamPath + UserVdfPath))
{
var v = vdfService.GetVdfModelByPath(SteamPath + UserVdfPath);
foreach (var item in v.Value)
{
var i = item.Value;
@@ -197,6 +197,10 @@ namespace SteamTool.Core
using TaskDefinition td = TaskService.Instance.NewTask();
td.RegistrationInfo.Description = Name + "System Boot Run";
td.Settings.Priority = System.Diagnostics.ProcessPriorityClass.Normal;
td.Settings.ExecutionTimeLimit = new TimeSpan(0);
td.Settings.AllowHardTerminate = false;
td.Settings.StopIfGoingOnBatteries = false;
td.Settings.DisallowStartIfOnBatteries = false;
td.Triggers.Add(new LogonTrigger());
td.Actions.Add(new ExecAction(Assembly.GetCallingAssembly().Location, "-minimized", Path.GetDirectoryName(Assembly.GetCallingAssembly().Location)));
if (IsAdministrator)
+1
View File
@@ -34,6 +34,7 @@ namespace SteamTool.Model
public const string STEAM_MEDIA_URL = "https://steamcdn-a.akamaihd.net/steam/apps/{0}/movie_max.webm";
public const string STEAM_VIDEO_URL = "https://store.steampowered.com/video/watch/{0}/";
public const string STEAM_REGISTERKEY_URL = "https://store.steampowered.com/account/registerkey?key={0}";
public const string STEAM_FRIENDMESSAGESLOG_URL = "https://help.steampowered.com/zh-cn/accountdata/GetFriendMessagesLog";
public const string STEAM_INSTALL_URL = "steam://install/{0}";
public const string STEAM_RUNGAME_URL = "steam://rungameid/{0}";
+16 -10
View File
@@ -101,21 +101,27 @@ namespace SteamTool.Proxy
if (e.HttpClient.Request.RequestUri.Scheme.Equals("http", StringComparison.OrdinalIgnoreCase))
{
e.Redirect(e.HttpClient.Request.RequestUri.AbsoluteUri.Remove(0, 4).Insert(0, "https"));
return;
}
IPAddress iP = null;
if (item.IsRedirect)
{
e.Redirect(e.HttpClient.Request.RequestUri.AbsoluteUri.Replace(e.HttpClient.Request.RequestUri.Host, item.ToDomain));
return;
}
IPAddress ip = null;
if (!string.IsNullOrEmpty(item.ProxyIPAddres))
{
iP = IPAddress.Parse(item.ProxyIPAddres);
ip = IPAddress.Parse(item.ProxyIPAddres);
}
else
{
var iPs = await Dns.GetHostAddressesAsync(item.ToDomain);
iP = iPs.FirstOrDefault();
ip = iPs.FirstOrDefault();
//Logger.Info("Proxy IP: " + iP);
}
if (iP != null)
if (ip != null)
{
e.HttpClient.UpStreamEndPoint = new IPEndPoint(IPAddress.Parse(iP.ToString()), item.Port);
e.HttpClient.UpStreamEndPoint = new IPEndPoint(IPAddress.Parse(ip.ToString()), item.Port);
}
if (e.HttpClient.ConnectRequest?.ClientHelloInfo != null)
{
@@ -265,7 +271,7 @@ namespace SteamTool.Proxy
var result = proxyServer.CertificateManager.CreateRootCertificate(true);
//if (result)
//{
if (!result)
if (!result)
{
Logger.Error("创建证书失败");
}
@@ -338,10 +344,10 @@ namespace SteamTool.Proxy
return false;
}
}
//if (PortInUse(443))
//{
// return false;
//}
if (PortInUse(443))
{
return false;
}
if (IsProxyGOG) { WirtePemCertificateToGoGSteamPlugins(); }
#region 写入Hosts
@@ -44,6 +44,11 @@ namespace SteamTool.Proxy
/// </summary>
public bool IsEnable { get; set; }
/// <summary>
/// 启用重定向
/// </summary>
public bool IsRedirect { get; set; }
public IReadOnlyCollection<string> Hosts { get; set; }
public DomainTag DomainTag { get; set; }
@@ -84,5 +89,7 @@ namespace SteamTool.Proxy
GithubGist = 14,
[Description("Pixiv图片")]
PixivImage = 15,
[Description("steam图片上传(聊天\\截图)")]
SteamImageUpload = 16,
}
}
+9
View File
@@ -177,6 +177,15 @@ namespace SteamTool.Proxy.Properties {
}
}
/// <summary>
/// 查找类似 Steam图片上传(聊天\截图) 的本地化字符串。
/// </summary>
public static string SteamImageUpload {
get {
return ResourceManager.GetString("SteamImageUpload", resourceCulture);
}
}
/// <summary>
/// 查找类似 Steam商店 的本地化字符串。
/// </summary>
@@ -156,6 +156,9 @@
<data name="SteamImage" xml:space="preserve">
<value>Steam图片</value>
</data>
<data name="SteamImageUpload" xml:space="preserve">
<value>Steam图片上传(聊天\截图)</value>
</data>
<data name="SteamStore" xml:space="preserve">
<value>Steam商店</value>
</data>
+23 -7
View File
@@ -91,15 +91,24 @@ namespace SteamTools
#endif
App.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
DispatcherHelper.UIDispatcher = this.Dispatcher;
if (e.Args.ContainsArg("-log") || GeneralSettings.IsEnableLogRecord)
{
Logger.EnableTextLog = true;
}
DispatcherHelper.UIDispatcher = this.Dispatcher;
SettingsHost.Load();
this.compositeDisposable.Add(SettingsHost.Save);
this.compositeDisposable.Add(ProxyService.Current.Shutdown);
this.compositeDisposable.Add(SteamConnectService.Current.Shutdown);
Microsoft.Win32.SystemEvents.SessionEnding += SystemEvents_SessionEnding;
if (e.Args.ContainsArg("-log") || GeneralSettings.IsEnableLogRecord)
{
Logger.EnableTextLog = true;
}
//每次启动都覆盖设置一次开机自启确保路径变换后开机自启依然生效
if (GeneralSettings.WindowsStartupAutoRun)
{
var steamService = SteamToolCore.Instance.Get<SteamToolService>();
steamService.SetWindowsStartupAutoRun(GeneralSettings.WindowsStartupAutoRun.Value, ProductInfo.Title);
}
GeneralSettings.Culture.Subscribe(x => ResourceService.Current.ChangeCulture(x)).AddTo(this);
WindowService.Current.AddTo(this).Initialize();
@@ -166,12 +175,19 @@ namespace SteamTools
#endif
}
private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
this.compositeDisposable.Dispose();
}
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
try
{
Logger.Error($"{Assembly.GetExecutingAssembly().GetName().Name} Run Error : {Environment.NewLine}", e.Exception);
MessageBox.Show(e.Exception.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
if (e.Exception.InnerException != null)
Logger.Error($"InnerException Error : {Environment.NewLine}", e.Exception.InnerException);
MessageBox.Show(e.Exception.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Run Error");
}
catch (Exception ex)
{
@@ -179,7 +195,7 @@ namespace SteamTools
MessageBox.Show(ex.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
}
Current.Shutdown();
//Current.Shutdown();
}
/// <summary>
@@ -15,8 +15,14 @@ namespace SteamTools.Models.Settings
{
WindowsStartupAutoRun.ValueChanged += WindowsStartupAutoRun_ValueChanged;
IsEnableLogRecord.ValueChanged += IsEnableLogRecord_ValueChanged;
//CreateDesktopShortcut.ValueChanged += CreateDesktopShortcut_ValueChanged;
}
//private static void CreateDesktopShortcut_ValueChanged(object sender, ValueChangedEventArgs<bool> e)
//{
//}
private static void IsEnableLogRecord_ValueChanged(object sender, ValueChangedEventArgs<bool> e)
{
Logger.EnableTextLog = e.NewValue;
@@ -40,6 +46,12 @@ namespace SteamTools.Models.Settings
public static SerializableProperty<bool> WindowsStartupAutoRun { get; }
= new SerializableProperty<bool>(GetKey(), Providers.Roaming, false) { AutoSave = true };
///// <summary>
///// 创建桌面快捷方式
///// </summary>
//public static SerializableProperty<bool> CreateDesktopShortcut { get; }
// = new SerializableProperty<bool>(GetKey(), Providers.Roaming, false) { AutoSave = true };
/// <summary>
/// 程序启动时最小化
/// </summary>
@@ -1,5 +1,6 @@
using MetroTrilithon.Serialization;
using SteamTool.Core.Common;
using SteamTools.Services;
using System;
using System.Collections.Generic;
using System.IO;
@@ -8,6 +9,7 @@ using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using SteamTools.Properties;
namespace SteamTools.Models.Settings
{
@@ -48,31 +50,63 @@ namespace SteamTools.Models.Settings
try
{
Providers.Local.Load();
//每次成功读取完成时保存一份bak
File.Copy(Providers.LocalFilePath, Providers.LocalFilePath + ".bak", true);
if (File.Exists(Providers.LocalFilePath))
File.Copy(Providers.LocalFilePath, Providers.LocalFilePath + ".bak", true);
}
catch (Exception ex)
{
Logger.Error(ex);
MessageBox.Show("Local Settings Load Error :" + ex.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
File.Copy(Providers.LocalFilePath, Providers.LocalFilePath + ".error", true);
File.Delete(Providers.LocalFilePath);
Providers.Local.Load();
//MessageBox.Show("Local Settings Load Error :" + ex.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
if (WindowService.Current.ShowDialogWindow(Providers.LocalFilePath + "\n" + Resources.ConfigLoadError))
{
if (File.Exists(Providers.LocalFilePath))
{
File.Copy(Providers.LocalFilePath, Providers.LocalFilePath + ".error", true);
if (File.Exists(Providers.LocalFilePath + ".bak"))
File.Copy(Providers.LocalFilePath + ".bak", Providers.LocalFilePath, true);
else
File.Delete(Providers.LocalFilePath);
}
Providers.Local.Load();
}
else
{
File.Delete(Providers.LocalFilePath);
Providers.Local.Load();
}
}
try
{
Providers.Roaming.Load();
//每次成功读取完成时保存一份bak
File.Copy(Providers.RoamingFilePath, Providers.RoamingFilePath + ".bak", true);
if (File.Exists(Providers.RoamingFilePath))
File.Copy(Providers.RoamingFilePath, Providers.RoamingFilePath + ".bak", true);
}
catch (Exception ex)
{
Logger.Error(ex);
MessageBox.Show("Roaming Settings Load Error :" + ex.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
File.Copy(Providers.RoamingFilePath, Providers.RoamingFilePath + ".error", true);
File.Delete(Providers.RoamingFilePath);
Providers.Roaming.Load();
//MessageBox.Show("Roaming Settings Load Error :" + ex.ToString(), $"{ProductInfo.Title} {ProductInfo.VersionString} Error");
if (WindowService.Current.ShowDialogWindow(Providers.RoamingFilePath + "\n" + Resources.ConfigLoadError))
{
if (File.Exists(Providers.RoamingFilePath))
{
File.Copy(Providers.RoamingFilePath, Providers.RoamingFilePath + ".error", true);
if (File.Exists(Providers.RoamingFilePath + ".bak"))
File.Copy(Providers.RoamingFilePath + ".bak", Providers.RoamingFilePath, true);
else
File.Delete(Providers.RoamingFilePath);
}
Providers.Roaming.Load();
}
else
{
File.Delete(Providers.RoamingFilePath);
Providers.Roaming.Load();
}
}
}
+18
View File
@@ -321,6 +321,15 @@ namespace SteamTools.Properties {
}
}
/// <summary>
/// 查找类似 配置文件加载失败是否还原到上一次读取成功的备份配置文件 的本地化字符串。
/// </summary>
public static string ConfigLoadError {
get {
return ResourceManager.GetString("ConfigLoadError", resourceCulture);
}
}
/// <summary>
/// 查找类似 确定 的本地化字符串。
/// </summary>
@@ -447,6 +456,15 @@ namespace SteamTools.Properties {
}
}
/// <summary>
/// 查找类似 FAQ 的本地化字符串。
/// </summary>
public static string FAQ {
get {
return ResourceManager.GetString("FAQ", resourceCulture);
}
}
/// <summary>
/// 查找类似 游戏 的本地化字符串。
/// </summary>
@@ -204,6 +204,9 @@
<data name="Community_Service_Tips" xml:space="preserve">
<value>已启用{0}个代理服务</value>
</data>
<data name="ConfigLoadError" xml:space="preserve">
<value>配置文件加载失败是否还原到上一次读取成功的备份配置文件</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>确定</value>
</data>
@@ -246,6 +249,9 @@
<data name="Exit" xml:space="preserve">
<value>退出</value>
</data>
<data name="FAQ" xml:space="preserve">
<value>FAQ</value>
</data>
<data name="Game" xml:space="preserve">
<value>游戏</value>
</data>
Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

+37 -25
View File
@@ -66,13 +66,22 @@ IsEnable= false,
},
new ProxyDomainModel{
Name=Resources.SteamImage,
Domains = new List<string>{"steamcdn-a.akamaihd.net" },
Domains = new List<string>{"steamcdn-a.akamaihd.net","steamuserimages-a.akamaihd.net" },
//ToDomain = "cdn.akamai.steamstatic.com",
ToDomain = "steamimage.rmbgame.net",
Hosts = new List<string>{ "steamcdn-a.akamaihd.net"},
Hosts = new List<string>{ "steamcdn-a.akamaihd.net","steamuserimages-a.akamaihd.net"},
DomainTag = DomainTag.SteamImage,
IsEnable= false,
},
//new ProxyDomainModel{
//Name=Resources.SteamImageUpload,
//Domains = new List<string>{"steamcloud-ugc-hkg.oss-cn-hongkong.aliyuncs.com"},
////ToDomain = "steamcloud-ugc.rmbgame.net",
//ProxyIPAddres = "47.97.233.33",
//Hosts = new List<string>{ "steamcloud-ugc-hkg.oss-cn-hongkong.aliyuncs.com"},
//DomainTag = DomainTag.SteamImage,
//IsEnable= false,
//},
new ProxyDomainModel{
Name=Resources.SteamChat,
Domains = new List<string>{"steam-chat.com" },
@@ -85,7 +94,7 @@ new ProxyDomainModel{
Name=Resources.Discord,
Domains = new List<string>{ "discordapp.com"},
ToDomain = "discord.rmbgame.net",
//ProxyIPAddres="162.159.129.233",
//ProxyIPAddres="162.159.130.233",
Hosts = new List<string>{
"discordapp.com",
"support.discordapp.com",
@@ -105,29 +114,29 @@ Hosts = new List<string>{
"canary.discordapp.com",
"apps.discordapp.com",
"pax.discordapp.com",
//"1.0.0.1 dl.discordapp.net",
//"1.0.0.1 media.discordapp.net",
//"1.0.0.1 images-ext-2.discordapp.net",
//"1.0.0.1 images-ext-1.discordapp.net",
"1.0.0.1 dl.discordapp.net",
"1.0.0.1 media.discordapp.net",
"1.0.0.1 images-ext-2.discordapp.net",
"1.0.0.1 images-ext-1.discordapp.net",
},
//ServerName= "discord.com",
DomainTag = DomainTag.Discord,
IsEnable= false,
},
new ProxyDomainModel{
Name=Resources.DiscordNet,
Domains = new List<string>{ "discordapp.net" },
//ProxyIPAddres="162.159.129.232",
ToDomain = "discordnet.rmbgame.net",
Hosts = new List<string>{
"1.0.0.1 dl.discordapp.net",
"media.discordapp.net",
"images-ext-2.discordapp.net",
"images-ext-1.discordapp.net",
},
DomainTag = DomainTag.DiscordNet,
IsEnable= false,
},
//new ProxyDomainModel{
//Name=Resources.DiscordNet,
//Domains = new List<string>{ "discordapp.net" },
////ProxyIPAddres="162.159.128.232",
//ToDomain = "discordnet.rmbgame.net",
//Hosts = new List<string>{
//"1.0.0.1 dl.discordapp.net",
//"media.discordapp.net",
//"images-ext-2.discordapp.net",
//"images-ext-1.discordapp.net",
//},
//DomainTag = DomainTag.DiscordNet,
//IsEnable= false,
//},
new ProxyDomainModel{
Name=Resources.TwitchChat,
Domains = new List<string>{ "irc-ws.chat.twitch.tv" },
@@ -190,7 +199,7 @@ IsEnable= false,
new ProxyDomainModel{
Name=Resources.OriginDownload,
Domains = new List<string>{"origin-a.akamaihd.net" },
ToDomain = "cctv4-lh.akamaihd.net",
ToDomain = "originakamaidownload.rmbgame.net",
Hosts = new List<string>{ "origin-a.akamaihd.net"},
DomainTag = DomainTag.OriginGameDownload,
IsEnable= false,
@@ -198,7 +207,8 @@ IsEnable= false,
new ProxyDomainModel{
Name=Resources.UplayUpdate,
Domains = new List<string>{"static3.cdn.ubi.com" },
ToDomain = "static2.cdn.ubi.com",
//ToDomain = "ubisoftstatic3.rmbgame.net",
ProxyIPAddres = "116.211.99.137",
Hosts = new List<string>{ "static3.cdn.ubi.com"},
DomainTag = DomainTag.UplayUpdate,
IsEnable= false,
@@ -239,7 +249,9 @@ IsEnable= false,
new ProxyDomainModel{
Name=Resources.GoogleRecaptchaCode,
Domains = new List<string>{"www.google.com" },
ToDomain = "googlerecaptchacode.rmbgame.net",
ToDomain = "www.recaptcha.net",
//ToDomain = "googlerecaptchacode.rmbgame.net",
IsRedirect = true,
Hosts = new List<string>{ "www.google.com"},
DomainTag = DomainTag.GoogleCode,
IsEnable= false,
@@ -398,7 +410,7 @@ IsEnable = false,
else
{
//WindowService.Current.ShowDialogWindow("启动加速服务失败,请检查443端口是否被占用或者证书安装失败。");
StatusService.Current.Notify("启动加速服务失败,请检查443端口是否被占用或者证书安装失败。");
StatusService.Current.Notify("启动加速服务失败,请检查443端口是否被占用或者证书安装失败。\n\n如果安装了vmware虚拟机,可能会导致443端口被占用。");
}
}
else
@@ -162,6 +162,7 @@ namespace SteamTools.Services
#region 初始化需要steam启动才能使用的功能
var mainViewModel = (WindowService.Current.MainWindow as MainWindowViewModel);
await mainViewModel.SteamAppPage.Initialize();
await mainViewModel.AccountPage.Initialize(id);
#if DEBUG
await mainViewModel.SystemTabItems[mainViewModel.SystemTabItems.Count - 1].Initialize();
#endif
+1 -3
View File
@@ -14,8 +14,8 @@ namespace SteamTools.Services
public class TaskbarService : NotificationObject
{
#region static members
public static TaskbarService Current { get; } = new TaskbarService();
#endregion
#region 托盘图标
private TaskbarIcon _TaskBar;
@@ -34,8 +34,6 @@ namespace SteamTools.Services
}
#endregion
#endregion
#region Message 変更通知
private string notificationTitle;
private string notificationMessage;
+7 -1
View File
@@ -35,7 +35,7 @@
<PackageId />
<Version>1.1.0</Version>
<Version>1.1.2</Version>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
@@ -114,6 +114,7 @@
<None Remove="Resources\Asstes\restore.png" />
<None Remove="Resources\Asstes\save.png" />
<None Remove="Resources\Asstes\seek.png" />
<None Remove="Resources\Asstes\steam_white.png" />
<None Remove="Resources\Asstes\trade.png" />
<None Remove="Resources\Asstes\unlock.png" />
<None Remove="Resources\Asstes\wechatdonate.png" />
@@ -155,6 +156,7 @@
<Resource Include="Resources\Asstes\restore.png" />
<Resource Include="Resources\Asstes\save.png" />
<Resource Include="Resources\Asstes\seek.png" />
<Resource Include="Resources\Asstes\steam_white.png" />
<Resource Include="Resources\Asstes\trade.png" />
<Resource Include="Resources\Asstes\unlock.png" />
<Resource Include="Resources\Asstes\wechatdonate.png" />
@@ -262,6 +264,10 @@
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Views\Content\About\AboutFAQ.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Views\Content\About\AboutUpdateHistory.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
@@ -80,12 +80,12 @@ namespace SteamTools.ViewModels
{
var mainWindow = (WindowService.Current.MainWindow as MainWindowViewModel);
mainWindow.IsVisible = true;
int.TryParse(index, out int i);
if (i < 0)
mainWindow.SelectedItem = mainWindow.SystemTabItems[Math.Abs(i) - 1];
//int.TryParse(index, out int i);
var sysTab = mainWindow.SystemTabItems.FirstOrDefault(f => f.Name == index);
if (sysTab != null)
mainWindow.SelectedItem = sysTab;
else
mainWindow.SelectedItem = mainWindow.TabItems[i];
mainWindow.SelectedItem = mainWindow.TabItems.First(f => f.Name == index);
TaskbarService.Current.Taskbar.TrayPopup.Visibility = Visibility.Collapsed;
}
}
@@ -124,7 +124,6 @@ namespace SteamTools.ViewModels
{
if (!this.IsInitialized)
{
base.Initialize();
await Task.Run(async () =>
{
foreach (var item in this.TabItems)
@@ -138,7 +137,7 @@ namespace SteamTools.ViewModels
}, TaskContinuationOptions.OnlyOnFaulted).ContinueWith(s => s.Dispose());
}
});
base.Initialize();
this.IsInitialized = true;
StatusService.Current.Set(Resources.Ready);
}
@@ -15,6 +15,8 @@ using SteamTool.Steam.Service;
using SteamTools.Services;
using SteamTool.Core.Common;
using SteamTools.Models.Settings;
using System.IO;
using System.Threading;
namespace SteamTools.ViewModels
{
@@ -77,6 +79,28 @@ namespace SteamTools.ViewModels
}).ContinueWith(s => { Logger.Error(s.Exception); WindowService.Current.ShowDialogWindow(s.Exception.Message); }, TaskContinuationOptions.OnlyOnFaulted).ContinueWith(s => s.Dispose());
}
internal async Task Initialize(long id)
{
//新账号不存在于列表时,重新加载
if (SteamUsers.Count(s => s.SteamId64 == id) == 0)
{
//var watch = new FileSystemWatcher
//{
// Path = steamService.SteamPath,
// Filter = SteamToolService.UserVdfPath,
// NotifyFilter = NotifyFilters.LastWrite
//};
//watch.Changed += (object sender, FileSystemEventArgs e) =>
//{
// watch.EnableRaisingEvents = false;
// watch.Dispose();
//};
//watch.EnableRaisingEvents = true;
await Task.Delay(6000);
await Initialize();
}
await Task.CompletedTask;
}
public void SteamId_OnClick(string parameter)
{
@@ -106,5 +130,14 @@ namespace SteamTools.ViewModels
steamService.UpdateSteamLocalUserData(user);
user.OriginVdfString = user.CurrentVdfString;
}
public void LoginSteamNewUser_Click()
{
var result = WindowService.Current.MainWindow.Dialog("确定要登录Steam新账户吗?\n此操作会重启Steam到新账号登录窗口。", "新Steam账号登录");
if (result)
{
SteamId_OnClick(string.Empty);
}
}
}
}
@@ -173,7 +173,7 @@ namespace SteamTools.ViewModels
this.Update();
}
public void LogoImage_Click(uint appid)
public static void LogoImage_Click(uint appid)
{
Process.Start(new ProcessStartInfo { FileName = string.Format(Const.STORE_APP_URL, appid.ToString()), UseShellExecute = true });
}
@@ -0,0 +1,97 @@
<UserControl x:Class="SteamTools.Views.Content.AboutFAQ"
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:local="clr-namespace:SteamTools.Views.Content"
xmlns:viewModel="clr-namespace:SteamTools.ViewModels"
xmlns:services="clr-namespace:SteamTools.Services"
xmlns:metro="http://schemes.grabacr.net/winfx/2014/controls"
xmlns:metro2="http://schemes.grabacr.net/winfx/2015/personal/controls"
xmlns:model="clr-namespace:SteamTool.Model;assembly=SteamTool.Model"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:livet="http://schemas.livet-mvvm.net/2011/wpf"
mc:Ignorable="d"
d:DesignHeight="400"
d:DesignWidth="600"
Background="{DynamicResource ThemeBrushKey}">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\Common.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<DockPanel Margin="8">
<TextBlock DockPanel.Dock="Top" Text="{Binding Resources.FAQ, Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{DynamicResource SettingsHeaderTextStyleKey}" />
<Border Grid.Column="1">
<FlowDocumentScrollViewer Padding="0,-18,0,0"
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto">
<FlowDocument FontSize="12"
Foreground="{DynamicResource ForegroundBrushKey}"
FontFamily="Meiryo UI"
TextAlignment="Left"
MaxPageWidth="900">
<Paragraph Language="zh-cn">
<Run Text="Q:开机自启动勾上了没有效果?"></Run>
<LineBreak />
<Run Text="A:程序的开机自启是通过windows任务计划实现的,设置需要程序拥有管理员权限,并且勾上开机自启以后不能移动程序位置,移动后因为路径变更需要重新勾选开机启动选项框才能生效。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:hosts正在由另一进程使用,因此该进程无法访问此文件。"></Run>
<LineBreak />
<Run Text="A:其实就如字面意思一样,hosts文件被其它程序占用了导致Steam++无法读写hosts文件。用任务管理器资源管理器的CPU句柄搜索hosts就可以找到占用的进程哦,结束掉它就好了。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:系统找不到指定的文件。在MetroRadiance.Interop.Win32.Dwmapi.DWmGetColorizationColor错误"></Run>
<LineBreak />
<Run Text="A:系统缺少了dwmapi.dll文件,想办法下回来或者重装系统可解。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:社区加速里的脚本启用了无效,为什么脚本前面的勾选框不会被保存?"></Run>
<LineBreak />
<Run Text="A:脚本是要做用于对应的代理服务才的,所以对应的脚本需要启用了对应的代理服务,同时也必须启用了代理加速功能启用脚本才有效,例如steam商店史低查询脚本必须要启用steam商店代理服务才能生效。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:社区加速里的脚本启用了无效,为什么脚本前面的勾选框不会被保存?"></Run>
<LineBreak />
<Run Text="A:脚本是要做用于对应的代理服务才的,所以对应的脚本需要启用了对应的代理服务,同时也必须启用了代理加速功能启用脚本才有效,例如steam商店史低查询脚本必须要启用steam商店代理服务才能生效。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:库存游戏列表无法加载,一直是空的?"></Run>
<LineBreak />
<Run Text="A:因为库存游戏列表第一次加载是从steam webapi获取数据,数据量较大且网络本身较慢,所以加载速度比较有限,需要多等待一会。如果在这期间退出了Steam++程序,那么可能会造成在Steam++目录下存了一个错误的apps.json缓存文件,这会导致之后一直无法正确加载库存游戏列表数据,所以删除这个文件重新启动一下Steam++,在耐心等待一下,应该就能加载出来了。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:库存游戏列表无法加载,一直是空的?"></Run>
<LineBreak />
<Run Text="A:因为库存游戏列表第一次加载是从steam webapi获取数据,数据量较大且网络本身较慢,所以加载速度比较有限,需要多等待一会。如果在这期间退出了Steam++程序,那么可能会造成在Steam++目录下存了一个错误的apps.json缓存文件,这会导致之后一直无法正确加载库存游戏列表数据,所以删除这个文件重新启动一下Steam++,在耐心等待一下,应该就能加载出来了。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:社区加速功能火狐浏览器访问报安全警告提示?"></Run>
<LineBreak />
<Run Text="A:火狐浏览器使用的是自己内置的证书认证,所以需要在火狐内手动导入Steam++根目录下的SteamTools.Certificate.cer证书文件。具体步骤为“火狐浏览器设置-隐私与安全-证书-查看证书-证书颁发机构-导入-选择SteamTools.Certificate.cer文件”" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:无法启动服务 提示证书安装失败或443端口占用?"></Run>
<LineBreak />
<Run Text="A:证书安装是否成功的检测方法为试试点击删除证书看看是否有反应,443端口被占用可以百度一下怎么查询占用端口的程序。注:Vmawre虚拟机也会导致提示443端口被占用服务无法启动。" />
<LineBreak/>
<LineBreak/>
<Run Text="Q:无法启动服务 提示证书安装失败或443端口占用?"></Run>
<LineBreak />
<Run Text="A:证书安装是否成功的检测方法为试试点击删除证书看看是否有反应,443端口被占用可以百度一下怎么查询占用端口的程序。注:Vmawre虚拟机也会导致提示443端口被占用服务无法启动。" />
<LineBreak/>
<LineBreak/>
<!--<Run Text="Q:软件启动时就报错,缺少根元素?"></Run>
<LineBreak />
<Run Text="A:配置文件加载出错了,检查下路径%HOMEPATH%\AppData\Local\rmbgame.net\Steam++以及%HOMEPATH%\AppData\Roaming\rmbgame.net\Steam++路径内的settings.json文件,如果没有重要数据可以删除此文件重置配置,或者手动还原备份settings.json.bak文件。同时可以考虑反馈settings.json.error文件给我排查问题。" />
<LineBreak/>
<LineBreak/>-->
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</Border>
</DockPanel>
</UserControl>
@@ -0,0 +1,28 @@
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;
namespace SteamTools.Views.Content
{
/// <summary>
/// AboutFAQ.xaml 的交互逻辑
/// </summary>
public partial class AboutFAQ : UserControl
{
public AboutFAQ()
{
InitializeComponent();
}
}
}
@@ -33,6 +33,43 @@
FontFamily="Meiryo UI"
TextAlignment="Left"
MaxPageWidth="900">
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.1.0" FontSize="16"/>
<Run Text="&#160;"/>
<Run Text="2021-01-22" FontSize="10" />
<LineBreak />
<Run Text="更新内容"></Run>
<LineBreak />
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="本地令牌市场交易确认功能上线" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增内置steam史低查询脚本" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增Steam启动消息通知设置项"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增github gist代理服务支持"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复设置文件的错误存储" />
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复discord更新下载和图片失效"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复twitch聊天频道连接失效"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="修复gihub头像资源加载失败"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="新增pixiv图片的代理选项来修复pixiv图片失效"></Run>
<LineBreak/>
<Run Text="&#160;&#160;&#160;&#160;"/>
<Run Text="还修复了一些没有记下来的bug..."></Run>
</Paragraph>
<Paragraph Language="zh-cn">
<Run Text="Steam++ v1.0.6" FontSize="16"/>
<Run Text="&#160;"/>
@@ -49,8 +49,15 @@
IsChecked="{Binding Source={x:Static ms:GeneralSettings.WindowsStartupAutoRun}, Path=Value, Mode=TwoWay}">
<TextBlock Text="开机自启动"></TextBlock>
</CheckBox>
<Separator Opacity="0" Height="10"/>
<!--<CheckBox
HorizontalAlignment="Left"
IsChecked="{Binding Source={x:Static ms:GeneralSettings.WindowsStartupAutoRun}, Path=Value, Mode=TwoWay}">
<TextBlock Text="创建桌面快捷方式"></TextBlock>
</CheckBox>
<Separator Opacity="0" Height="10"/>-->
<WrapPanel>
<CheckBox
HorizontalAlignment="Left"
@@ -73,13 +80,6 @@
<Run Text="启动后检测Steam未启动自动运行Steam"></Run>
</TextBlock>
</WrapPanel>
<Separator Opacity="0" Height="10"/>
<CheckBox
HorizontalAlignment="Left"
IsChecked="{Binding Source={x:Static ms:GeneralSettings.IsAutoCheckUpdate}, Path=Value, Mode=TwoWay}">
<TextBlock Text="启动时自动检查更新"></TextBlock>
</CheckBox>
<Separator Opacity="0" Height="10"/>
<CheckBox
HorizontalAlignment="Left"
@@ -87,6 +87,12 @@
<TextBlock Text="检测到Steam启动时弹出消息通知"></TextBlock>
</CheckBox>
<Separator Opacity="0" Height="10"/>
<CheckBox
HorizontalAlignment="Left"
IsChecked="{Binding Source={x:Static ms:GeneralSettings.IsAutoCheckUpdate}, Path=Value, Mode=TwoWay}">
<TextBlock Text="启动时自动检查更新"></TextBlock>
</CheckBox>
<Separator Opacity="0" Height="10"/>
<WrapPanel>
<metro2:CallMethodButton Content="检查更新"
@@ -162,7 +168,7 @@
<CheckBox
HorizontalAlignment="Left"
IsChecked="{Binding Source={x:Static ms:GeneralSettings.IsEnableLogRecord}, Path=Value, Mode=TwoWay}">
<TextBlock Text="启用日志"></TextBlock>
<TextBlock Text="启用日志记录"></TextBlock>
</CheckBox>
<TextBlock Style="{StaticResource DetailTextStyleKey}" Margin="0,6,0,0">
<Run Text="记录错误日志到程序根目录Log文件夹内,反馈BUG时把日志也提交上来,方便排查闪退报错原因。"></Run>
@@ -91,7 +91,21 @@
</TextBlock>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SteamAccountPageViewModel}" />
<DataTemplate DataType="{x:Type vm:SteamAccountPageViewModel}" >
<StackPanel Orientation="Horizontal">
<metro:CaptionButton Grid.Column="2" VerticalAlignment="Center" ToolTip="登录新Steam账号"
Style="{DynamicResource StatusButtonStyleKey}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<livet:LivetCallMethodAction
MethodName="LoginSteamNewUser_Click"
MethodTarget="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Image Source="pack://application:,,,/Resources/Asstes/steam_white.png" Width="14"></Image>
</metro:CaptionButton>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SteamAppPageViewModel}" >
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource StatusText}" VerticalAlignment="Center" Text="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.Steam_Not_Runing_Tips}"
@@ -124,7 +124,7 @@
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<livet:LivetCallMethodAction MethodName="NavigateTabItem"
MethodTarget="{Binding}" MethodParameter="1"/>
MethodTarget="{Binding}" MethodParameter="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.CommunityFix}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBoxItem>
@@ -137,7 +137,7 @@
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<livet:LivetCallMethodAction MethodName="NavigateTabItem"
MethodTarget="{Binding}" MethodParameter="2"/>
MethodTarget="{Binding}" MethodParameter="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.UserFastChange}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBoxItem>
@@ -150,7 +150,7 @@
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<livet:LivetCallMethodAction MethodName="NavigateTabItem"
MethodTarget="{Binding}" MethodParameter="3"/>
MethodTarget="{Binding}" MethodParameter="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.GameList}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBoxItem>
@@ -163,7 +163,7 @@
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<livet:LivetCallMethodAction MethodName="NavigateTabItem"
MethodTarget="{Binding}" MethodParameter="4"/>
MethodTarget="{Binding}" MethodParameter="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.SteamAuth}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBoxItem>
@@ -181,7 +181,7 @@
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<livet:LivetCallMethodAction MethodName="NavigateTabItem"
MethodTarget="{Binding}" MethodParameter="-1"/>
MethodTarget="{Binding}" MethodParameter="{Binding Source={x:Static services:ResourceService.Current}, Path=Resources.Settings}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBoxItem>
+9 -1
View File
@@ -35,7 +35,15 @@
</TabItem.Header>
<pages:WelcomePage></pages:WelcomePage>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.FAQ, Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
Style="{StaticResource TabHeaderTextStyleKey}" />
</TabItem.Header>
<contents:AboutFAQ></contents:AboutFAQ>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="{Binding Resources.About_Donate,Source={x:Static services:ResourceService.Current}, Mode=OneWay}"
@@ -281,7 +281,7 @@
Prompt="" />
<TextBlock Grid.Row="1" Grid.Column="0">
<Run Text="从files文件夹中,粘贴'SteamGuard-NNNNNNNN'的全部内容" />
<Run Text="从files文件夹中,打开'SteamGuard-NNNNNNNN'文件,粘贴文件的全部内容" />
</TextBlock>
<metro:PromptTextBox Grid.Row="1"
Grid.Column="1"
+1 -1
View File
@@ -2,7 +2,7 @@
// @name GM
// @namespace
// @version 0.1
// @description 基础脚本框架
// @description 基础脚本框架(不建议取消勾选,会导致某些脚本无法运行)
// @author 软妹币玩家
// @match *
// @enable true