├── update
├── version
└── PvzLauncher_.exe
├── icon.ico
├── assets
├── add.png
├── qq.png
├── about.png
├── cancel.png
├── close.png
├── delete.png
├── done.png
├── edit.png
├── error.png
├── folder.png
├── game.png
├── gitee.png
├── github.png
├── home.png
├── icon.ico
├── icon.png
├── launch.png
├── save.png
├── save_.png
├── select.png
├── update.png
├── PvZ_Logo.png
├── bilibili.png
├── download.png
├── refresh.png
├── replace.png
├── settings.png
├── victroy.png
├── PvZ_Logo_zh.png
├── PvzToolkit.png
├── PvzToolkit_.png
├── alphatest.png
├── download_.png
├── settings_.png
├── titlescreen.png
├── icon_outline.png
├── miss_texture.png
├── Readme
│ ├── Main_Page.png
│ └── SetGame.png
├── titlescreen_home.png
├── titlescreen_ori.png
└── titlescreen_home_.png
├── App.config
├── packages.config
├── Properties
├── Settings.settings
├── AssemblyInfo.cs
├── Settings.Designer.cs
├── Resources.resx
└── Resources.Designer.cs
├── Program.cs
├── PVZLauncher.sln
├── PvzLauncher.sln
├── README.md
├── .gitattributes
├── DownloadService
└── index.ini
├── SetName_Window.Designer.cs
├── Download_Window.Designer.cs
├── README.en.md
├── Download_Window.resx
├── SelectGame_Window.resx
├── SetGame_Window.resx
├── .gitignore
├── SelectGame_Window.Designer.cs
├── PVZLauncher.csproj
├── SetName_Window.resx
├── Main_Window.resx
├── SetGame_Window.Designer.cs
├── LICENSE.txt
└── SetName_Window.cs
/update/version:
--------------------------------------------------------------------------------
1 | LTS 1.3
--------------------------------------------------------------------------------
/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/icon.ico
--------------------------------------------------------------------------------
/assets/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/add.png
--------------------------------------------------------------------------------
/assets/qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/qq.png
--------------------------------------------------------------------------------
/assets/about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/about.png
--------------------------------------------------------------------------------
/assets/cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/cancel.png
--------------------------------------------------------------------------------
/assets/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/close.png
--------------------------------------------------------------------------------
/assets/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/delete.png
--------------------------------------------------------------------------------
/assets/done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/done.png
--------------------------------------------------------------------------------
/assets/edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/edit.png
--------------------------------------------------------------------------------
/assets/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/error.png
--------------------------------------------------------------------------------
/assets/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/folder.png
--------------------------------------------------------------------------------
/assets/game.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/game.png
--------------------------------------------------------------------------------
/assets/gitee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/gitee.png
--------------------------------------------------------------------------------
/assets/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/github.png
--------------------------------------------------------------------------------
/assets/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/home.png
--------------------------------------------------------------------------------
/assets/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/icon.ico
--------------------------------------------------------------------------------
/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/icon.png
--------------------------------------------------------------------------------
/assets/launch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/launch.png
--------------------------------------------------------------------------------
/assets/save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/save.png
--------------------------------------------------------------------------------
/assets/save_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/save_.png
--------------------------------------------------------------------------------
/assets/select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/select.png
--------------------------------------------------------------------------------
/assets/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/update.png
--------------------------------------------------------------------------------
/assets/PvZ_Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/PvZ_Logo.png
--------------------------------------------------------------------------------
/assets/bilibili.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/bilibili.png
--------------------------------------------------------------------------------
/assets/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/download.png
--------------------------------------------------------------------------------
/assets/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/refresh.png
--------------------------------------------------------------------------------
/assets/replace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/replace.png
--------------------------------------------------------------------------------
/assets/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/settings.png
--------------------------------------------------------------------------------
/assets/victroy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/victroy.png
--------------------------------------------------------------------------------
/assets/PvZ_Logo_zh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/PvZ_Logo_zh.png
--------------------------------------------------------------------------------
/assets/PvzToolkit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/PvzToolkit.png
--------------------------------------------------------------------------------
/assets/PvzToolkit_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/PvzToolkit_.png
--------------------------------------------------------------------------------
/assets/alphatest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/alphatest.png
--------------------------------------------------------------------------------
/assets/download_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/download_.png
--------------------------------------------------------------------------------
/assets/settings_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/settings_.png
--------------------------------------------------------------------------------
/assets/titlescreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/titlescreen.png
--------------------------------------------------------------------------------
/assets/icon_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/icon_outline.png
--------------------------------------------------------------------------------
/assets/miss_texture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/miss_texture.png
--------------------------------------------------------------------------------
/update/PvzLauncher_.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/update/PvzLauncher_.exe
--------------------------------------------------------------------------------
/assets/Readme/Main_Page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/Readme/Main_Page.png
--------------------------------------------------------------------------------
/assets/Readme/SetGame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/Readme/SetGame.png
--------------------------------------------------------------------------------
/assets/titlescreen_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/titlescreen_home.png
--------------------------------------------------------------------------------
/assets/titlescreen_ori.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/titlescreen_ori.png
--------------------------------------------------------------------------------
/assets/titlescreen_home_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/isHuaMouRen/PvzLauncher/HEAD/assets/titlescreen_home_.png
--------------------------------------------------------------------------------
/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace PvzLauncher
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// 应用程序的主入口点。
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new Main_Window());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // 有关程序集的一般信息由以下
6 | // 控制。更改这些特性值可修改
7 | // 与程序集关联的信息。
8 | [assembly: AssemblyTitle("PvzLauncher")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("PvzLauncher")]
13 | [assembly: AssemblyCopyright("Copyright © 2025")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // 将 ComVisible 设置为 false 会使此程序集中的类型
18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
19 | //请将此类型的 ComVisible 特性设置为 true。
20 | [assembly: ComVisible(false)]
21 |
22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
23 | [assembly: Guid("4ef7a88c-22b0-4656-953f-6e9cb1cb7af6")]
24 |
25 | // 程序集的版本信息由下列四个值组成:
26 | //
27 | // 主版本
28 | // 次版本
29 | // 生成号
30 | // 修订号
31 | //
32 | [assembly: AssemblyVersion("1.1.3.7")]
33 | [assembly: AssemblyFileVersion("1.1.3.7")]
34 |
--------------------------------------------------------------------------------
/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PvzLauncher.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/PVZLauncher.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.13.35828.75
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PvzLauncher", "PvzLauncher.csproj", "{4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateService", "..\UpdateService\UpdateService.csproj", "{161B5335-F8E3-4143-ABF4-D211268D9A79}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Release|x64 = Release|x64
13 | EndGlobalSection
14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
15 | {4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}.Release|x64.ActiveCfg = Release|x64
16 | {4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}.Release|x64.Build.0 = Release|x64
17 | {161B5335-F8E3-4143-ABF4-D211268D9A79}.Release|x64.ActiveCfg = Release|Any CPU
18 | {161B5335-F8E3-4143-ABF4-D211268D9A79}.Release|x64.Build.0 = Release|Any CPU
19 | EndGlobalSection
20 | GlobalSection(SolutionProperties) = preSolution
21 | HideSolutionNode = FALSE
22 | EndGlobalSection
23 | GlobalSection(ExtensibilityGlobals) = postSolution
24 | SolutionGuid = {53E6F259-FB16-4548-82F7-9A0B3B9C7FF0}
25 | EndGlobalSection
26 | EndGlobal
27 |
--------------------------------------------------------------------------------
/PvzLauncher.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.13.35828.75
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PvzLauncher", "PvzLauncher.csproj", "{4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateService", "..\UpdateService\UpdateService.csproj", "{161B5335-F8E3-4143-ABF4-D211268D9A79}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Release|x64 = Release|x64
13 | EndGlobalSection
14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
15 | {4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}.Release|x64.ActiveCfg = Release|x64
16 | {4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}.Release|x64.Build.0 = Release|x64
17 | {161B5335-F8E3-4143-ABF4-D211268D9A79}.Release|x64.ActiveCfg = Release|Any CPU
18 | {161B5335-F8E3-4143-ABF4-D211268D9A79}.Release|x64.Build.0 = Release|Any CPU
19 | EndGlobalSection
20 | GlobalSection(SolutionProperties) = preSolution
21 | HideSolutionNode = FALSE
22 | EndGlobalSection
23 | GlobalSection(ExtensibilityGlobals) = postSolution
24 | SolutionGuid = {53E6F259-FB16-4548-82F7-9A0B3B9C7FF0}
25 | EndGlobalSection
26 | EndGlobal
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [归档声明]植物大战僵尸启动器
2 | 此项目在制作时有很多想法没有实现。于是在发布最终版发布5个月后。我们使用WPF制作了一个重置版
3 |
4 | [点我跳转到新仓库](https://github.com/isHuaMouRen/PvzLauncher-Remake)
5 |
6 | (继续向下翻可查看自述文件)
7 |
8 | **项目名称**:植物大战僵尸启动器
9 | **版本状态**:长期支持版 (LTS)
10 | **归档日期**:2025年6月1日
11 |
12 | ## 📢 声明内容
13 |
14 | 本项目 **《植物大战僵尸启动器》** 的开发工作已全部完成,并发布最终稳定版本(LTS 1.3)。即日起,项目进入**归档状态(Archived)**,代表:
15 |
16 | 1. **功能完善**:所有设计功能均已实现,包括游戏快捷启动、版本切换、窗口化设置、存档管理等核心特性;
17 | 2. **停止更新**:不再新增功能或修复非严重性问题;
18 | 3. **永久可用**:最终版程序将持续提供下载,兼容当前主流系统环境。
19 | 4. **游戏库保留**:游戏库游戏数量达到使用需求后,将不再更新
20 |
21 |
22 | ## 🙏 致谢
23 | 感谢所有测试用户、社区贡献者及植物大战僵尸爱好者对本项目的支持!本工具旨在优化游戏体验,请合法使用正版游戏资源。
24 |
25 | ## ⚠️ 版权说明
26 | 本启动器为**非官方、免费工具**,仅供学习交流。
27 | 《植物大战僵尸》是 PopCap Games 的注册商标,版权归属其所有者。
28 |
29 | ## 🔗 获取最终版
30 | 项目主页:`https://github.com/bilibilihuazi/PvzLauncher`
31 |
32 | > **归档不是结束,而是项目的圆满结点**
33 | > 愿草坪上的向日葵永远向阳,僵尸永不越线 🌻🧟
34 |
35 |
36 |
37 | (↓自述文件↓)
38 |
39 | # Plants Vs Zombies Launcher
40 |
41 | 
42 |
43 | ## 概述
44 |
45 | **Plants Vs Zombies Launcher(植物大战僵尸启动器)** 是一款可以`启动、管理、修改、下载`游戏的多功能启动器
46 |
47 | ## 优点
48 |
49 | - **快捷启动游戏**:不必再去一个个找文件夹启动游戏了
50 | - **管理游戏**:可快捷更换、恢复pak包,有效提升了pak包的安装效率
51 | - **下载游戏**:可直接在启动器内下载`英文原版、中文原版、中文改版`等多个版本,省去了寻找游戏资源与安装游戏的时间
52 | - **修复游戏**:一键检测&修复游戏资,可解决无法寻找到`gdi42.dll`与`bass.dll`的问题
53 | - **修改游戏**:可以配置游戏窗口的**强制全屏**以及**窗口出现位置**的参数
54 | - **存档管理**:快捷删除存档、替换通关存档;还可以将每个版本的存档独立。
55 | - **修改器管理**:启动器发布时内置一个多功能修改器:**PvzToolkit**。如果想要添加其他修改器,可在设置内直接添加
56 | - **导入与虚拟导入**:可将游戏导入进启动器游戏库、统一管理游戏;虚拟导入则是为游戏体积大,不方便移动的情况制作的。(*仅写入游戏信息,启动时直接在源位置启动,不移动源文件*)
57 |
58 | ## 为什么要制作此启动器?
59 |
60 | 由于作者在玩植物大战僵尸时,切换改版以及管理游戏非常不方便。寻找改版也很困难。所以便制作了这款启动器,用于管理多个版本
61 |
62 | ## 依赖
63 |
64 | 此程序基于`.NET Framework 4.8`制作。使用`WinForm`框架,`AntdUI`库以及`ReaLTaiizorUI`库
65 |
66 | 如您的电脑没有安装`.NET Framework 4.8`,软件启动时会提示您去下载
67 |
68 | `AntdUI`库以及`ReaLTaiizorUI`库的依赖文件已在启动器发布时包含
69 |
70 | ## 开发者
71 | *排名不分前后*
72 |
73 | 代码(2):
74 | - **华某人** - 启动器所有的代码都由他独立完成
75 | - **DeepSeek** - 提供部分的代码支持
76 |
77 | 美术(3):
78 | - **YesIcon** - 程序所有的图标来演
79 | - **华某人** - 部分手绘图标
80 | - **PopCap Games** - 游戏资源图片
81 |
82 | 提供BUG反馈以及建议(3):
83 | - **华某人** - 自己在测试的时候就发现了不少BUG
84 | - **ewrtuikh** - 提出部分建议以及BUG反馈
85 | - **Fantasy-幻梦** - 提出部分建议以及BUG反馈
86 | - **小王** - 提出部分建议以及BUG反馈
87 |
88 | ## 加入我们
89 |
90 | 帮助我们更好的制作启动器并获得最新消息!
91 | - QQ交流群:`1040764053`
92 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/DownloadService/index.ini:
--------------------------------------------------------------------------------
1 | [index_ori_en]
2 | num=7
3 | 1=原版v1.0.0.1051[推荐]
4 | 2=内测版BloomAndDoom
5 | 3=Steam年度正版
6 | 4=年度加强版
7 | 5=原版v1.2.0.1065
8 | 6=年度试玩版
9 | 7=年度版v1.2.0.1073
10 |
11 | [ori_en]
12 | 年度加强版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iJF142xhq4sb
13 | 内测版BloomAndDoom=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ipGaj2xhqn8f
14 | Steam年度正版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/irD8v2xhq0ba
15 | 原版v1.0.0.1051[推荐]=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iG6o32xhpwza
16 | 原版v1.2.0.1065=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iH2ye2xhqtng
17 | 年度试玩版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ikiug2xhr26d
18 | 年度版v1.2.0.1073=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iHctf2xhraid
19 |
20 | [index_ori_zh]
21 | num=5
22 | 1=汉化一版v1.0.0.1051[推荐]
23 | 2=Steam汉化版
24 | 3=汉化二版v1.0.0.1051
25 | 4=汉化版v1.2.0.1065
26 | 5=年度植吧完美汉化版v1.2.0.1065
27 |
28 | [ori_zh]
29 | Steam汉化版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iNIBB2xhrs3g
30 | 汉化一版v1.0.0.1051[推荐]=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iDQuz2xhs4fa
31 | 汉化二版v1.0.0.1051=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/idLY02xhsaub
32 | 汉化版v1.2.0.1065=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iZFH22xhseej
33 | 年度植吧完美汉化版v1.2.0.1065=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iC7kR2xhsuwd
34 |
35 | [index_re_zh]
36 | num=4
37 | 1=beta版6.30-R1[推荐]
38 | 2=95版
39 | 3=鉴版
40 | 4=杂交版v3.7
41 |
42 | [re_zh]
43 | 95版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iAfDE2xht1ha
44 | beta版6.30-R1[推荐]=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ish6M2xht58f
45 | 鉴版=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ivtHp2xhtccb
46 | 杂交版v3.7=https://lz.qaiu.top/parser?url=https://www.ilanzou.com/s/Uk1Z7frK
47 |
48 | [index_trainer]
49 | num=17
50 | 1=PvzToolkit1.22.0[推荐]
51 | 2=IZ自制关卡快捷布阵器V1.1.0
52 | 3=随机数修改器
53 | 4=Steam正版七项修改器
54 | 5=植物大战僵尸修改器V1.7.1
55 | 6=植物大战僵尸修改器V1.8.7
56 | 7=植物大战僵尸修改器V1.9
57 | 8=植物大战僵尸修改器V4.6.3
58 | 9=变速齿轮
59 | 10=窗口缩放器
60 | 11=花瓶修改器
61 | 12=年度加强版修改器
62 | 13=咸鱼修改器
63 | 14=小王子出怪修改
64 | 15=血量显示
65 | 16=血量显示(映射版)
66 | 17=9项属性修改器
67 |
68 | [trainer]
69 | PvzToolkit1.22.0[推荐]=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iPD6h2xmenkf
70 | 9项属性修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iOmWi2xl3izi
71 | IZ自制关卡快捷布阵器V1.1.0=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iI53t2xl3qab
72 | 随机数修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/i7vWg2xl3ugb
73 | Steam正版七项修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ifIHb2xl4bkh
74 | 植物大战僵尸修改器V1.7.1=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/i2xbk2xl4s7g
75 | 植物大战僵尸修改器V1.8.7=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iHeyH2xl5aah
76 | 植物大战僵尸修改器V1.9=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iM22v2xl5h4d
77 | 植物大战僵尸修改器V4.6.3=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ilCvT2xl5l2f
78 | 变速齿轮=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iLSlO2xl5uvi
79 | 窗口缩放器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ius1W2xl5y9a
80 | 花瓶修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/ip5Uo2xl6bqf
81 | 年度加强版修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/imoxf2xl6ita
82 | 咸鱼修改器=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iHd0E2xl6nja
83 | 小王子出怪修改=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iqqQR2xl6psb
84 | 血量显示=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/iGpcL2xl73ob
85 | 血量显示(映射版)=https://lz.qaiu.top/parser?url=https://hhzyx.lanzouo.com/id3l02xl869a
--------------------------------------------------------------------------------
/SetName_Window.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PvzLauncher
2 | {
3 | partial class SetName_Window
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetName_Window));
32 | this.textBox_Name = new System.Windows.Forms.TextBox();
33 | this.button_Done = new System.Windows.Forms.Button();
34 | this.button_Cancel = new System.Windows.Forms.Button();
35 | this.SuspendLayout();
36 | //
37 | // textBox_Name
38 | //
39 | this.textBox_Name.Location = new System.Drawing.Point(12, 12);
40 | this.textBox_Name.Name = "textBox_Name";
41 | this.textBox_Name.Size = new System.Drawing.Size(440, 23);
42 | this.textBox_Name.TabIndex = 0;
43 | this.textBox_Name.TextChanged += new System.EventHandler(this.textBox_Name_TextChanged);
44 | //
45 | // button_Done
46 | //
47 | this.button_Done.Enabled = false;
48 | this.button_Done.Location = new System.Drawing.Point(348, 41);
49 | this.button_Done.Name = "button_Done";
50 | this.button_Done.Size = new System.Drawing.Size(104, 26);
51 | this.button_Done.TabIndex = 1;
52 | this.button_Done.Text = "确定";
53 | this.button_Done.UseVisualStyleBackColor = true;
54 | this.button_Done.Click += new System.EventHandler(this.button_Done_Click);
55 | //
56 | // button_Cancel
57 | //
58 | this.button_Cancel.Location = new System.Drawing.Point(238, 41);
59 | this.button_Cancel.Name = "button_Cancel";
60 | this.button_Cancel.Size = new System.Drawing.Size(104, 26);
61 | this.button_Cancel.TabIndex = 2;
62 | this.button_Cancel.Text = "取消";
63 | this.button_Cancel.UseVisualStyleBackColor = true;
64 | this.button_Cancel.Click += new System.EventHandler(this.button_Cancel_Click);
65 | //
66 | // SetName_Window
67 | //
68 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
69 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
70 | this.ClientSize = new System.Drawing.Size(464, 79);
71 | this.Controls.Add(this.button_Cancel);
72 | this.Controls.Add(this.button_Done);
73 | this.Controls.Add(this.textBox_Name);
74 | this.Font = new System.Drawing.Font("微软雅黑 Light", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
75 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
76 | this.Margin = new System.Windows.Forms.Padding(4);
77 | this.MaximizeBox = false;
78 | this.MaximumSize = new System.Drawing.Size(480, 118);
79 | this.MinimizeBox = false;
80 | this.MinimumSize = new System.Drawing.Size(480, 118);
81 | this.Name = "SetName_Window";
82 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
83 | this.Text = "请输入新的名字";
84 | this.Load += new System.EventHandler(this.SetName_Window_Load);
85 | this.ResumeLayout(false);
86 | this.PerformLayout();
87 |
88 | }
89 |
90 | #endregion
91 |
92 | private System.Windows.Forms.TextBox textBox_Name;
93 | private System.Windows.Forms.Button button_Done;
94 | private System.Windows.Forms.Button button_Cancel;
95 | }
96 | }
--------------------------------------------------------------------------------
/Download_Window.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PvzLauncher
2 | {
3 | partial class Download_Window
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.label1 = new AntdUI.Label();
32 | this.progress1 = new AntdUI.Progress();
33 | this.label2 = new AntdUI.Label();
34 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
35 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
36 | this.SuspendLayout();
37 | //
38 | // label1
39 | //
40 | this.label1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
41 | this.label1.HandCursor = System.Windows.Forms.Cursors.Default;
42 | this.label1.Location = new System.Drawing.Point(88, 11);
43 | this.label1.Name = "label1";
44 | this.label1.Size = new System.Drawing.Size(120, 41);
45 | this.label1.TabIndex = 1;
46 | this.label1.Text = "下载中...";
47 | //
48 | // progress1
49 | //
50 | this.progress1.ContainerControl = this;
51 | this.progress1.HandCursor = System.Windows.Forms.Cursors.Default;
52 | this.progress1.Location = new System.Drawing.Point(88, 58);
53 | this.progress1.Name = "progress1";
54 | this.progress1.Size = new System.Drawing.Size(486, 23);
55 | this.progress1.TabIndex = 2;
56 | this.progress1.Text = "progress1";
57 | //
58 | // label2
59 | //
60 | this.label2.HandCursor = System.Windows.Forms.Cursors.Default;
61 | this.label2.Location = new System.Drawing.Point(214, 29);
62 | this.label2.Name = "label2";
63 | this.label2.Size = new System.Drawing.Size(360, 23);
64 | this.label2.TabIndex = 3;
65 | this.label2.Text = "下载中";
66 | //
67 | // pictureBox1
68 | //
69 | this.pictureBox1.Image = global::PvzLauncher.Properties.Resources.download;
70 | this.pictureBox1.Location = new System.Drawing.Point(12, 11);
71 | this.pictureBox1.Name = "pictureBox1";
72 | this.pictureBox1.Size = new System.Drawing.Size(70, 70);
73 | this.pictureBox1.TabIndex = 4;
74 | this.pictureBox1.TabStop = false;
75 | //
76 | // Download_Window
77 | //
78 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
79 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
80 | this.ClientSize = new System.Drawing.Size(586, 93);
81 | this.Controls.Add(this.pictureBox1);
82 | this.Controls.Add(this.label2);
83 | this.Controls.Add(this.progress1);
84 | this.Controls.Add(this.label1);
85 | this.EnableHitTest = false;
86 | this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
87 | this.Margin = new System.Windows.Forms.Padding(4);
88 | this.MaximizeBox = false;
89 | this.MaximumSize = new System.Drawing.Size(586, 93);
90 | this.MinimizeBox = false;
91 | this.MinimumSize = new System.Drawing.Size(586, 93);
92 | this.Name = "Download_Window";
93 | this.Resizable = false;
94 | this.ShowInTaskbar = false;
95 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
96 | this.Text = "下载";
97 | this.Load += new System.EventHandler(this.Download_Window_Load);
98 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
99 | this.ResumeLayout(false);
100 |
101 | }
102 |
103 | #endregion
104 | private AntdUI.Label label1;
105 | private AntdUI.Progress progress1;
106 | private AntdUI.Label label2;
107 | private System.Windows.Forms.PictureBox pictureBox1;
108 | }
109 | }
--------------------------------------------------------------------------------
/README.en.md:
--------------------------------------------------------------------------------
1 | # Warn
2 | **The README file you are viewing may not be the latest version. If you want to get the latest information, please go to the simplified Chinese version of the readme file: [README.md](README.md)**
3 |
4 | # Plants Vs. Zombies Launcher
5 | [简体中文](README.md) | [English](README.en.md)
6 |
7 | 
8 |
9 | ## Download
10 | You can download the latest version directly from the Releases section of the Github repository or Gitee mirror:
11 | Github Repository: [https://github.com/bilibilihuazi/PvzLauncher](https://github.com/bilibilihuazi/PvzLauncher)
12 | Gitee Mirror: [https://gitee.com/huamouren110/pvz-launcher](https://gitee.com/huamouren110/pvz-launcher)
13 |
14 |
15 | Alternative download links (may not be the latest version):
16 | LanZou Cloud: [https://hhzyx.lanzouo.com/b00b4q0fxg Password:2cds](https://hhzyx.lanzouo.com/b00b4q0fxg)
17 | LanZou Cloud Premium: [https://www.ilanzou.com/s/6r4ZLvSU](https://www.ilanzou.com/s/6r4ZLvSU)
18 | 123 Cloud Disk (Primary): [https://www.123865.com/s/9hDQjv-LJBn3](https://www.123865.com/s/9hDQjv-LJBn3)
19 | 123 Cloud Disk (Backup): [https://www.123684.com/s/9hDQjv-LJBn3](https://www.123684.com/s/9hDQjv-LJBn3)
20 | huang1111 Cloud: [https://pan.huang1111.cn/s/mxK1os1](https://pan.huang1111.cn/s/mxK1os1)
21 |
22 | ## Overview
23 | This launcher supports **launching and managing** the game.
24 |
25 | ## Features
26 | ### Version Management
27 | 
28 | 
29 |
30 | The launcher allows quick **importing, managing, and launching** of games. It provides a GUI interface, making it easy for players unfamiliar with game file structures to operate.
31 |
32 | A statistics interface is also included, allowing users to **view playtime, first launch date**, and more.
33 |
34 | ### Built-in Trainer
35 | 
36 |
37 | The launcher includes a built-in trainer, eliminating the need to search for external tools. The settings menu offers an option to **launch the trainer automatically with the game**.
38 |
39 | ### Save Management
40 | 
41 | 
42 |
43 | The trainer also provides save management functionality, allowing users to **replace saves with completed ones** effortlessly.
44 |
45 | ## Why This Launcher Was Created
46 | With numerous PVZ mods available, managing downloaded versions can be **challenging** due to **disorganized file structures**. Mod versions often have inconsistent file setups, requiring significant effort to launch. This launcher aims to simplify **launching and managing** games.
47 |
48 | Additionally, there are **no existing PVZ launchers** online, which motivated the creation of this tool. The built-in `PvzToolkit` trainer works with most game versions.
49 |
50 | ## Version Numbering Rules
51 | Starting from `Release1.0.0.0`, versions follow these rules:
52 |
53 | Release version: `[Major].[Minor].[Pre-Release Count].[Change Count]`
54 | Pre-Release version: `[Target Major].[Target Minor].[Pre-Release ID].[Change Count]`
55 |
56 | | Term | Description |
57 | |---------------------|-----------------------------------------------------------------------------|
58 | | Major Version | Increments when Minor Version reaches 10 |
59 | | Minor Version | Increments per release, resets to 0 at 10, triggering Major Version increment|
60 | | Change Count | Total number of changes in the version |
61 | | Pre-Release Count | Number of Pre-Release versions for the target Release |
62 | | Pre-Release ID | Sequence number of the Pre-Release for the target Release |
63 |
64 | Examples:
65 | - A Release with Major `1`, Minor `1`, `1` Pre-Release, and `10` changes: `Release 1.1.10.3`.
66 | - A Pre-Release targeting Major `1`, Minor `2`, as the 3rd Pre-Release with `5` changes: `Pre-Release 1.2.5.2`.
67 |
68 | ## Dependencies
69 | Built using `.NET Framework 4.8 WinForm`, with UI libraries `AntdUI` (primary) and `ReaLTaiizor` (secondary).
70 |
71 | The package includes DLLs for both UI libraries. Download the .NET Framework Runtime [here](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework).
72 |
73 | ## References
74 | [.NET Framework 4.8 Runtime](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net48)
75 | [AntdUI](https://gitee.com/antdui/AntdUI)
76 | [ReaLTaiizor](https://github.com/Taiizor/ReaLTaiizor)
77 |
78 | ## Credits
79 | **Code (2):**
80 | 1. **华某人** (Entire launcher code)
81 | 2. **DeepSeek** (Partial custom functions)
82 |
83 | **UI (2):**
84 | 1. **华某人** (Most UI elements)
85 | 2. **PCL2** (Partial design inspiration)
86 |
87 | **Art (3):**
88 | 1. **YesIcon** (Most icons) [Website↗](https://yesicon.app/)
89 | 2. **华某人** (Partial image editing)
90 | 3. **Plants Vs Zombies** (Minor images)
91 |
92 | **External Tools (2):**
93 | 1. **PvzToolkit** (Built-in trainer)
94 | 2. **PopCap Games** (Built-in game)
95 |
96 | **Contributors (2):**
97 | 1. **ewrtuikh** (Identified critical bugs)
98 | 2. **旅行者** (Provided feedback for Pre-Release 1.0.x.1)
99 | 3. **Fantasy-幻梦** (Suggested improvements and reported bugs for Pre-Release 1.0.x.2+)
--------------------------------------------------------------------------------
/Download_Window.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/SelectGame_Window.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 200, 17
125 |
126 |
127 | 55
128 |
129 |
--------------------------------------------------------------------------------
/SetGame_Window.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 159, 17
125 |
126 |
127 | 244, 17
128 |
129 |
130 | 51
131 |
132 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/SelectGame_Window.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PvzLauncher
2 | {
3 | partial class SelectGame_Window
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.pageHeader = new AntdUI.PageHeader();
32 | this.button_VirtualLoad = new AntdUI.Button();
33 | this.button_Load = new AntdUI.Button();
34 | this.button_Refresh = new AntdUI.Button();
35 | this.ListBox = new ReaLTaiizor.Controls.MaterialListBox();
36 | this.button_Done = new AntdUI.Button();
37 | this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
38 | this.button_Cancel = new AntdUI.Button();
39 | this.image3D_GameIcon = new AntdUI.Image3D();
40 | this.label_Gameinfo1 = new AntdUI.Label();
41 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
42 | this.pageHeader.SuspendLayout();
43 | this.SuspendLayout();
44 | //
45 | // pageHeader
46 | //
47 | this.pageHeader.Controls.Add(this.button_VirtualLoad);
48 | this.pageHeader.Controls.Add(this.button_Load);
49 | this.pageHeader.Controls.Add(this.button_Refresh);
50 | this.pageHeader.HandCursor = System.Windows.Forms.Cursors.Default;
51 | this.pageHeader.Location = new System.Drawing.Point(0, 0);
52 | this.pageHeader.Margin = new System.Windows.Forms.Padding(4);
53 | this.pageHeader.MaximizeBox = false;
54 | this.pageHeader.MinimizeBox = false;
55 | this.pageHeader.Name = "pageHeader";
56 | this.pageHeader.ShowButton = true;
57 | this.pageHeader.Size = new System.Drawing.Size(611, 30);
58 | this.pageHeader.TabIndex = 0;
59 | this.pageHeader.Text = "选择版本";
60 | //
61 | // button_VirtualLoad
62 | //
63 | this.button_VirtualLoad.BackExtend = "135, #6253E1, #04BEFE";
64 | this.button_VirtualLoad.HandCursor = System.Windows.Forms.Cursors.Default;
65 | this.button_VirtualLoad.Icon = global::PvzLauncher.Properties.Resources.folder;
66 | this.button_VirtualLoad.IconRatio = 0.8F;
67 | this.button_VirtualLoad.Location = new System.Drawing.Point(247, 0);
68 | this.button_VirtualLoad.Name = "button_VirtualLoad";
69 | this.button_VirtualLoad.Size = new System.Drawing.Size(128, 30);
70 | this.button_VirtualLoad.TabIndex = 7;
71 | this.button_VirtualLoad.Text = "虚拟导入";
72 | this.button_VirtualLoad.Type = AntdUI.TTypeMini.Primary;
73 | this.button_VirtualLoad.Click += new System.EventHandler(this.button_VirtualLoad_Click);
74 | //
75 | // button_Load
76 | //
77 | this.button_Load.HandCursor = System.Windows.Forms.Cursors.Default;
78 | this.button_Load.Icon = global::PvzLauncher.Properties.Resources.folder;
79 | this.button_Load.IconRatio = 0.8F;
80 | this.button_Load.Location = new System.Drawing.Point(381, 0);
81 | this.button_Load.Name = "button_Load";
82 | this.button_Load.Size = new System.Drawing.Size(128, 30);
83 | this.button_Load.TabIndex = 6;
84 | this.button_Load.Text = "导入";
85 | this.button_Load.Type = AntdUI.TTypeMini.Warn;
86 | this.button_Load.Click += new System.EventHandler(this.button_Load_Click);
87 | //
88 | // button_Refresh
89 | //
90 | this.button_Refresh.HandCursor = System.Windows.Forms.Cursors.Default;
91 | this.button_Refresh.Icon = global::PvzLauncher.Properties.Resources.refresh;
92 | this.button_Refresh.IconRatio = 0.8F;
93 | this.button_Refresh.Location = new System.Drawing.Point(515, 0);
94 | this.button_Refresh.Name = "button_Refresh";
95 | this.button_Refresh.Size = new System.Drawing.Size(30, 30);
96 | this.button_Refresh.TabIndex = 5;
97 | this.button_Refresh.Type = AntdUI.TTypeMini.Primary;
98 | this.button_Refresh.Click += new System.EventHandler(this.button_Refresh_Click);
99 | //
100 | // ListBox
101 | //
102 | this.ListBox.BackColor = System.Drawing.Color.White;
103 | this.ListBox.BorderColor = System.Drawing.Color.LightGray;
104 | this.ListBox.Depth = 0;
105 | this.ListBox.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
106 | this.ListBox.Location = new System.Drawing.Point(12, 37);
107 | this.ListBox.MouseState = ReaLTaiizor.Helper.MaterialDrawHelper.MaterialMouseState.HOVER;
108 | this.ListBox.Name = "ListBox";
109 | this.ListBox.SelectedIndex = -1;
110 | this.ListBox.SelectedItem = null;
111 | this.ListBox.Size = new System.Drawing.Size(587, 321);
112 | this.ListBox.TabIndex = 1;
113 | this.ListBox.SelectedIndexChanged += new ReaLTaiizor.Controls.MaterialListBox.SelectedIndexChangedEventHandler(this.ListBox_SelectedIndexChanged);
114 | //
115 | // button_Done
116 | //
117 | this.button_Done.Enabled = false;
118 | this.button_Done.HandCursor = System.Windows.Forms.Cursors.Default;
119 | this.button_Done.Icon = global::PvzLauncher.Properties.Resources.done;
120 | this.button_Done.Location = new System.Drawing.Point(488, 364);
121 | this.button_Done.Name = "button_Done";
122 | this.button_Done.Size = new System.Drawing.Size(111, 42);
123 | this.button_Done.TabIndex = 3;
124 | this.button_Done.Text = "确定";
125 | this.button_Done.Type = AntdUI.TTypeMini.Success;
126 | this.button_Done.Click += new System.EventHandler(this.button_Done_Click);
127 | //
128 | // folderBrowserDialog1
129 | //
130 | this.folderBrowserDialog1.Description = "请选择含有可执行文件的游戏目录";
131 | //
132 | // button_Cancel
133 | //
134 | this.button_Cancel.HandCursor = System.Windows.Forms.Cursors.Default;
135 | this.button_Cancel.Icon = global::PvzLauncher.Properties.Resources.cancel;
136 | this.button_Cancel.Location = new System.Drawing.Point(371, 364);
137 | this.button_Cancel.Name = "button_Cancel";
138 | this.button_Cancel.Size = new System.Drawing.Size(111, 42);
139 | this.button_Cancel.TabIndex = 4;
140 | this.button_Cancel.Text = "取消";
141 | this.button_Cancel.Type = AntdUI.TTypeMini.Error;
142 | this.button_Cancel.Click += new System.EventHandler(this.button_Cancel_Click);
143 | //
144 | // image3D_GameIcon
145 | //
146 | this.image3D_GameIcon.HandCursor = System.Windows.Forms.Cursors.Default;
147 | this.image3D_GameIcon.Image = global::PvzLauncher.Properties.Resources.icon;
148 | this.image3D_GameIcon.Location = new System.Drawing.Point(12, 364);
149 | this.image3D_GameIcon.Name = "image3D_GameIcon";
150 | this.image3D_GameIcon.Size = new System.Drawing.Size(42, 42);
151 | this.image3D_GameIcon.TabIndex = 2;
152 | //
153 | // label_Gameinfo1
154 | //
155 | this.label_Gameinfo1.HandCursor = System.Windows.Forms.Cursors.Default;
156 | this.label_Gameinfo1.Location = new System.Drawing.Point(60, 364);
157 | this.label_Gameinfo1.Name = "label_Gameinfo1";
158 | this.label_Gameinfo1.Size = new System.Drawing.Size(305, 23);
159 | this.label_Gameinfo1.TabIndex = 5;
160 | this.label_Gameinfo1.Text = "请选择游戏";
161 | //
162 | // openFileDialog1
163 | //
164 | this.openFileDialog1.Filter = "可执行文件|*.exe";
165 | this.openFileDialog1.Title = "请选择游戏的可执行文件";
166 | //
167 | // SelectGame_Window
168 | //
169 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
170 | this.ClientSize = new System.Drawing.Size(611, 414);
171 | this.Controls.Add(this.label_Gameinfo1);
172 | this.Controls.Add(this.button_Cancel);
173 | this.Controls.Add(this.button_Done);
174 | this.Controls.Add(this.image3D_GameIcon);
175 | this.Controls.Add(this.ListBox);
176 | this.Controls.Add(this.pageHeader);
177 | this.EnableHitTest = false;
178 | this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
179 | this.Margin = new System.Windows.Forms.Padding(4);
180 | this.MaximizeBox = false;
181 | this.MaximumSize = new System.Drawing.Size(611, 414);
182 | this.MinimizeBox = false;
183 | this.MinimumSize = new System.Drawing.Size(611, 414);
184 | this.Name = "SelectGame_Window";
185 | this.Resizable = false;
186 | this.ShowInTaskbar = false;
187 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
188 | this.Text = "SelectGame_Window";
189 | this.Load += new System.EventHandler(this.SelectGame_Window_Load);
190 | this.pageHeader.ResumeLayout(false);
191 | this.ResumeLayout(false);
192 |
193 | }
194 |
195 | #endregion
196 |
197 | private AntdUI.PageHeader pageHeader;
198 | private ReaLTaiizor.Controls.MaterialListBox ListBox;
199 | private AntdUI.Image3D image3D_GameIcon;
200 | private AntdUI.Button button_Done;
201 | private AntdUI.Button button_Cancel;
202 | private AntdUI.Button button_Refresh;
203 | private AntdUI.Button button_Load;
204 | private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
205 | private AntdUI.Label label_Gameinfo1;
206 | private AntdUI.Button button_VirtualLoad;
207 | private System.Windows.Forms.OpenFileDialog openFileDialog1;
208 | }
209 | }
--------------------------------------------------------------------------------
/PVZLauncher.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {4EF7A88C-22B0-4656-953F-6E9CB1CB7AF6}
8 | WinExe
9 | PvzLauncher
10 | PvzLauncher
11 | v4.8
12 | 512
13 | true
14 | true
15 | publish\
16 | true
17 | Disk
18 | false
19 | Foreground
20 | 7
21 | Days
22 | false
23 | false
24 | true
25 | 0
26 | 1.0.0.%2a
27 | false
28 | false
29 | true
30 |
31 |
32 |
33 |
34 | AnyCPU
35 | true
36 | full
37 | false
38 | bin\Debug\
39 | DEBUG;TRACE
40 | prompt
41 | 4
42 |
43 |
44 | AnyCPU
45 | pdbonly
46 | true
47 | bin\Release\
48 | TRACE
49 | prompt
50 | 4
51 |
52 |
53 | true
54 | bin\x64\Debug\
55 | DEBUG;TRACE
56 | full
57 | x64
58 | 7.3
59 | prompt
60 | true
61 |
62 |
63 | bin\x64\Release\
64 | TRACE
65 | true
66 | pdbonly
67 | x64
68 | 7.3
69 | prompt
70 | true
71 |
72 |
73 | true
74 | bin\x86\Debug\
75 | DEBUG;TRACE
76 | full
77 | x86
78 | 7.3
79 | prompt
80 | true
81 |
82 |
83 | bin\x86\Release\
84 | TRACE
85 | true
86 | pdbonly
87 | x86
88 | 7.3
89 | prompt
90 | true
91 |
92 |
93 | true
94 | bin\ARM64\Debug\
95 | DEBUG;TRACE
96 | full
97 | ARM64
98 | 7.3
99 | prompt
100 | true
101 |
102 |
103 | bin\ARM64\Release\
104 | TRACE
105 | true
106 | pdbonly
107 | ARM64
108 | 7.3
109 | prompt
110 | true
111 |
112 |
113 | icon.ico
114 |
115 |
116 |
117 | packages\AntdUI.2.0.1\lib\net48\AntdUI.dll
118 |
119 |
120 |
121 | packages\ReaLTaiizor.3.8.1.2\lib\net48\ReaLTaiizor.dll
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 | Form
141 |
142 |
143 | Download_Window.cs
144 |
145 |
146 | Form
147 |
148 |
149 | Main_Window.cs
150 |
151 |
152 |
153 |
154 | True
155 | True
156 | Resources.resx
157 |
158 |
159 | Form
160 |
161 |
162 | SelectGame_Window.cs
163 |
164 |
165 | Form
166 |
167 |
168 | SetGame_Window.cs
169 |
170 |
171 | Form
172 |
173 |
174 | SetName_Window.cs
175 |
176 |
177 | Download_Window.cs
178 |
179 |
180 | Main_Window.cs
181 |
182 |
183 | ResXFileCodeGenerator
184 | Resources.Designer.cs
185 |
186 |
187 | SelectGame_Window.cs
188 |
189 |
190 | SetGame_Window.cs
191 |
192 |
193 | SetName_Window.cs
194 |
195 |
196 |
197 | SettingsSingleFileGenerator
198 | Settings.Designer.cs
199 |
200 |
201 | True
202 | Settings.settings
203 | True
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 | False
253 | Microsoft .NET Framework 4.8 %28x86 和 x64%29
254 | true
255 |
256 |
257 | False
258 | .NET Framework 3.5 SP1
259 | false
260 |
261 |
262 |
263 |
--------------------------------------------------------------------------------
/SetName_Window.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJu
129 | QgASPyYGBAwIDAAAAAYcHBwE2tfaAvDt8ALx7fAC8e3wAvHt8ALx7fAA8e3wAAAAAAAAAAAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAst
131 | FwQNLhoKESMYYDhCPc9MTEzzZWJkx1taW7F4dnijbWttm1BOUKVbWVqlRkVGmSQkJJVFQ0RWOzo7MCsq
132 | KxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
133 | AAALIRZOGRYexR0bHcuHfoX71c3T/+fj5v/t6u3/7urt/evn6v3i3uH719PW+dvW2vPOyc31lZKU+4aD
134 | hfd3dXfvT05P0xgYGIkGBQYuCgkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
135 | AAAAAAEAAgQEJB8dJ+UwKzn9jYOM/9/V3v/r6Ov/7ens/+7r7v/v7O//8O7v/+/t7//p4uj/3s/b/76s
136 | u/+xpa//w7rB/9XN1P/i2uH/xb3D/3JqcfVBPECVCxUQGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
137 | AAAAAAAAAAAAAAEBAg4TERe5eGuU/UU+Sv3Sv8//5Nvi/+3q7f/v7O7/8u7x//Lv8f/y8fL/8fDx/+vl
138 | 6f/Asb3/lI2T/8jDx//Ev8P/tq+1/5WMlP/Kucf/xbDB/7afsf9mWmTXEBYTPhhNLgAAAAAAAAAAAAAA
139 | AAAAAAAAAAAAAAAAAAAAAAAABgUHfGRZePmkksr/V05Z/d3I2f/m3uT/7urt//Hu8P/y8PL/9PHz//Tz
140 | 9P/08/T/8Onu/6eepv/v6+7/8+/y/+7q7f/r5+r/3Nbb/5OLkv+7qrj/e214/7Wfsf9kW2PtBgsJNgAA
141 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkICrPsqDX/6uZ0f9QSFX/3MTY/+nd5//u6e3/8e3w//Lw
142 | 8v/z8fL/9fT1//Xy9P/w6/D/7ebr//Pv8v/v6+7/7ens/+rn6f/l4uT/ysHI/3ZudP+dkZv/mpKZ/5yN
143 | mf9TS1LHAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4bI+PDsuj/t6Xe/0tDWP/GrsH/49Hg/+rg
144 | 6P/w6u//8+7y//Pw8v/z7vH/4dvh/+Xh5f/07/P/9PDz/+7q7f/u6u3/7ens/+vm6v/m3OT/nZKb/93S
145 | 2//i4OL/npid/5iIlf8XFBbBAQEBEgAAAAAAAAAAAAAAAAAAAAABAQEGFhQb8cOz5v/Fs+v/bF+G/4x8
146 | jP/exdn/6Nvl/+3j6//y6vD/7ubt/+XV4v/Zytf/hH+D/11aXf/bzdn/59/m/+vl6v/q4+n/6eDo/9HI
147 | z/9rY2//zcTM/+nm6P+emZ3/sZ+t/11TW/0BAQFMAAAAAAAAAAAAAAAAAAAAAAEBAUQgHSb7s6bO/9XF
148 | 9f+mlMv/U0pg/8OtwP/hzt7/59nk/+rg6f/i1eD/28fY/9bD0v84NTj/PDg7/9bD0v/e0dv/5N3j/+bg
149 | 5f+3sLb/mY6t/6KOy/+ZjqP/4NXe/7irtf/ArLz/lYeS/w0MDZMAAAAAAAAAAAAAAAAAAAAAAAAAZk5H
150 | XP+XjK3/18jz/8m47f+HeKf/V05c/9C6zP/izt7/5dfi/93O2//cydn/tqaz/4B7gP9lX2T/28fY/93R
151 | 2//i3OH/5N7i/8XCxP+YkqD/loez/4+BoP/Xx9T/1M/T/8vEyf+snqn/FxUXwwAAAAAAAAAAAAAAAAEB
152 | AQAAAACbgXWX/46Cpf/Txe//z8Hv/72s4f92aZP/XVNf/9G6zf/dyNn/3MrZ/dzM2f28q7n/g3mB/8Wz
153 | wf/bydj/4Nbe/+Hc4P/k4OL/5+bn/+Ti4//Iv8b/wa6+/7+su/+jnaH/wrvA/5iMlv8ODA3FAAAAAAAA
154 | AAABAQEAAAAATi8rNe27rNn/n5G7/6qewf/SxPD/yrvr/7ak2f9uYof/cWVz/9S90P/YwtT/2cbW/9vJ
155 | 2PvYxdX/2sfX/93Q2v/e1dz/39ve/+Ph4v/j4eL/29fa/9DDzf/Is8T/ZFtj/z03O/+yoK//UEhO7QEB
156 | AU4AAAAAAAAAAAEBAU4nJC3zuK3L/+3n+v/OvPD/g3mY/9fJ8//Qwe7/yLnp/7Wk2P9xZIr/bmNw/9G8
157 | zv/XwdP/18LU/9jF1f3bytn/3dLb/9zT2v/g3N//4uDh/93a3P/SytD/y7nH/8Owv/9MSUz/dW1z/5uL
158 | mO0MCwx0AQEBBAAAAAABAQE+HBog9bWozP/08fr/9vL9/+bb+v+4p9j/opa6/9fJ9P/Rwu//xbXn/7am
159 | 2v9/cZv/X1Vl/66drP/Vv9H/1cDS/9fD1P/ZyNb/2s3X/9zX2//b19r/1c3T/86/y//Ntcj/xbDB/2Fa
160 | YP+MgIr9OjU5rQEBAQ4AAAAAAQEBEAYGB8eSh6j/493x//r4/v/8+/7/9fL7/8q66v+mlsX/uq3V/9XG
161 | 8//Mve3/xLXn/7yt3/+VhrX/SEBW/3FmcP++rLz/07/R/dO+0P/Sv87/0sXP/87FzP/OwMv/0LzN/dG6
162 | zf3Ru879zLnJ+XBobvMODg6rAQEBAgAAAAAAAABCPThE/8K03v/7+v3//Pz+/+/r9v+/sNz/p5TN/7Si
163 | 2v+qm8r/tqjS/86/7f/Juuv/xLXn/7+v4v+omM3/dWeQ/01EWv9sYW3/rJuq/8m1x//Pusv/zLjJ/824
164 | yv/Su8790bvO9864y/WuoK3nSEpS9wwLDtEBAQEAAAAAAAYGCJWZjq3/0sfp/+7q9v/Uy+j/q5rQ/6aT
165 | zP+bi73/jYCp/8i26/+2p9f/sKHN/8S15f/BsuT/v6/j/7Wk2v+ql9D/oI7G/4Jzov9kWHr/YVZu/35x
166 | hf+DdYX/fnGA/2JYY/9aUV77Zltz+3Vrjv1XT2b/AwMEbgAAAAAAAAAAICAp08S23//AsuD/tKTX/7Si
167 | 2P+jlMP/U0xk/3lwiv+5q9X/0MHw/8y87P+3qNj/saLS/7en3P+zotn/r53U/6mWz/+lk8r/oo/H/5yK
168 | wv+aiMD/k4K3/459sf+QfrL/h3eo/5SCuP+kksr/lIev/xIRFbcBAQEKAAAAAAAAAAAsKjbxsqnX/4eL
169 | vP9/dJf/SUNW8xYVG88gHSXfqp7E/9XF8//RwvH/zL3t/8a36f/AsOP/ppXK/56Mwv+lk8v/pZLL/52L
170 | w/+ejMP/moe//5qHv/+bicD/m4nB/52Kw/+disP/nIvB/5GErf8dGyLlAAAALgAAAAAAAAAAAAAAAAcb
171 | LMEbKDvJChQfrQQEBWoBAQEwAQEBBgAAAFwjICnzraDI/9HC8f/Nvu7/yrvs/8S05v+yodj/pJHJ/5SE
172 | t/+FdqT/fm+b/4FyoP+Hd6f/hXam/31vm/92aJL/aFyB/1dObP8iHin5DAsPwQEBAVCzoK8CAAAAAAAA
173 | AAAAAAAACE1/BgZNfwgHTn8AAAAAAAAAAAAAAAAAAQEBAAEBATIZFx3Te3GP/8i56f/IuOz/tqXc/6uY
174 | 0f+tmtP/r53W/6mXzv+LfKr/cGOK/2VZff9tYYb/cGOK/1ZMav9rX4L/VExl/QEBAWIBAQEGAAAAAAAA
175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBARIAAACHERAU2zUv
176 | QO1IQFj7XlNy/2hdf/9rYIL/aF1+/29kiP9vY4n/hnek/4l6p/+KfKb/t6zM/8zB4/8qJjP5AQEBOgAA
177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
178 | AAABAQEQAQEBJAEBAUABAQFSAQEBZAEBAXABAQF0AAAAjSwoNfm+reT/s6HZ/8zB4v/18/v/tqrP/wMC
179 | A8sBAQEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
180 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEIBQQG45KGr/+8quP/xbrd/+ji
181 | 8/9yZ4n/AQEBeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6RD1R/8Gv
183 | 5//Ctt3/u7DS/yMgKu8BAQEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB
185 | ARYHBgjniHui/7em2/9fV3D/AgIDfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
187 | AAAAAAAAAQEBAAEBAUoMCw75KCQx/QYFB7EBAQEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
189 | AAAAAAAAAAAAAAAAAAAAAAAAAQEBAgEBAUIBAQFIAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
192 | AAAAAAAAAAAAAAAAAAAAAAAA/////////////////+AH//8AAH/+AAAf/AAAD/wAAAf4AAAD+AAAAfgA
193 | AAH4AAAA+AAAAPAAAADwAAAB4AAAA8AAAAOAAAADgAAAAwAAAAcAAAAHAAAADx4AAB//AAB//4AAf///
194 | gH///8D////g////4f////H///////////8=
195 |
196 |
197 |
--------------------------------------------------------------------------------
/Main_Window.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 59
122 |
123 |
124 |
125 |
126 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJu
132 | QgASPyYGBAwIDAAAAAYcHBwE2tfaAvDt8ALx7fAC8e3wAvHt8ALx7fAA8e3wAAAAAAAAAAAAAAAAAAAA
133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAst
134 | FwQNLhoKESMYYDhCPc9MTEzzZWJkx1taW7F4dnijbWttm1BOUKVbWVqlRkVGmSQkJJVFQ0RWOzo7MCsq
135 | KxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
136 | AAALIRZOGRYexR0bHcuHfoX71c3T/+fj5v/t6u3/7urt/evn6v3i3uH719PW+dvW2vPOyc31lZKU+4aD
137 | hfd3dXfvT05P0xgYGIkGBQYuCgkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
138 | AAAAAAEAAgQEJB8dJ+UwKzn9jYOM/9/V3v/r6Ov/7ens/+7r7v/v7O//8O7v/+/t7//p4uj/3s/b/76s
139 | u/+xpa//w7rB/9XN1P/i2uH/xb3D/3JqcfVBPECVCxUQGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
140 | AAAAAAAAAAAAAAEBAg4TERe5eGuU/UU+Sv3Sv8//5Nvi/+3q7f/v7O7/8u7x//Lv8f/y8fL/8fDx/+vl
141 | 6f/Asb3/lI2T/8jDx//Ev8P/tq+1/5WMlP/Kucf/xbDB/7afsf9mWmTXEBYTPhhNLgAAAAAAAAAAAAAA
142 | AAAAAAAAAAAAAAAAAAAAAAAABgUHfGRZePmkksr/V05Z/d3I2f/m3uT/7urt//Hu8P/y8PL/9PHz//Tz
143 | 9P/08/T/8Onu/6eepv/v6+7/8+/y/+7q7f/r5+r/3Nbb/5OLkv+7qrj/e214/7Wfsf9kW2PtBgsJNgAA
144 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkICrPsqDX/6uZ0f9QSFX/3MTY/+nd5//u6e3/8e3w//Lw
145 | 8v/z8fL/9fT1//Xy9P/w6/D/7ebr//Pv8v/v6+7/7ens/+rn6f/l4uT/ysHI/3ZudP+dkZv/mpKZ/5yN
146 | mf9TS1LHAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4bI+PDsuj/t6Xe/0tDWP/GrsH/49Hg/+rg
147 | 6P/w6u//8+7y//Pw8v/z7vH/4dvh/+Xh5f/07/P/9PDz/+7q7f/u6u3/7ens/+vm6v/m3OT/nZKb/93S
148 | 2//i4OL/npid/5iIlf8XFBbBAQEBEgAAAAAAAAAAAAAAAAAAAAABAQEGFhQb8cOz5v/Fs+v/bF+G/4x8
149 | jP/exdn/6Nvl/+3j6//y6vD/7ubt/+XV4v/Zytf/hH+D/11aXf/bzdn/59/m/+vl6v/q4+n/6eDo/9HI
150 | z/9rY2//zcTM/+nm6P+emZ3/sZ+t/11TW/0BAQFMAAAAAAAAAAAAAAAAAAAAAAEBAUQgHSb7s6bO/9XF
151 | 9f+mlMv/U0pg/8OtwP/hzt7/59nk/+rg6f/i1eD/28fY/9bD0v84NTj/PDg7/9bD0v/e0dv/5N3j/+bg
152 | 5f+3sLb/mY6t/6KOy/+ZjqP/4NXe/7irtf/ArLz/lYeS/w0MDZMAAAAAAAAAAAAAAAAAAAAAAAAAZk5H
153 | XP+XjK3/18jz/8m47f+HeKf/V05c/9C6zP/izt7/5dfi/93O2//cydn/tqaz/4B7gP9lX2T/28fY/93R
154 | 2//i3OH/5N7i/8XCxP+YkqD/loez/4+BoP/Xx9T/1M/T/8vEyf+snqn/FxUXwwAAAAAAAAAAAAAAAAEB
155 | AQAAAACbgXWX/46Cpf/Txe//z8Hv/72s4f92aZP/XVNf/9G6zf/dyNn/3MrZ/dzM2f28q7n/g3mB/8Wz
156 | wf/bydj/4Nbe/+Hc4P/k4OL/5+bn/+Ti4//Iv8b/wa6+/7+su/+jnaH/wrvA/5iMlv8ODA3FAAAAAAAA
157 | AAABAQEAAAAATi8rNe27rNn/n5G7/6qewf/SxPD/yrvr/7ak2f9uYof/cWVz/9S90P/YwtT/2cbW/9vJ
158 | 2PvYxdX/2sfX/93Q2v/e1dz/39ve/+Ph4v/j4eL/29fa/9DDzf/Is8T/ZFtj/z03O/+yoK//UEhO7QEB
159 | AU4AAAAAAAAAAAEBAU4nJC3zuK3L/+3n+v/OvPD/g3mY/9fJ8//Qwe7/yLnp/7Wk2P9xZIr/bmNw/9G8
160 | zv/XwdP/18LU/9jF1f3bytn/3dLb/9zT2v/g3N//4uDh/93a3P/SytD/y7nH/8Owv/9MSUz/dW1z/5uL
161 | mO0MCwx0AQEBBAAAAAABAQE+HBog9bWozP/08fr/9vL9/+bb+v+4p9j/opa6/9fJ9P/Rwu//xbXn/7am
162 | 2v9/cZv/X1Vl/66drP/Vv9H/1cDS/9fD1P/ZyNb/2s3X/9zX2//b19r/1c3T/86/y//Ntcj/xbDB/2Fa
163 | YP+MgIr9OjU5rQEBAQ4AAAAAAQEBEAYGB8eSh6j/493x//r4/v/8+/7/9fL7/8q66v+mlsX/uq3V/9XG
164 | 8//Mve3/xLXn/7yt3/+VhrX/SEBW/3FmcP++rLz/07/R/dO+0P/Sv87/0sXP/87FzP/OwMv/0LzN/dG6
165 | zf3Ru879zLnJ+XBobvMODg6rAQEBAgAAAAAAAABCPThE/8K03v/7+v3//Pz+/+/r9v+/sNz/p5TN/7Si
166 | 2v+qm8r/tqjS/86/7f/Juuv/xLXn/7+v4v+omM3/dWeQ/01EWv9sYW3/rJuq/8m1x//Pusv/zLjJ/824
167 | yv/Su8790bvO9864y/WuoK3nSEpS9wwLDtEBAQEAAAAAAAYGCJWZjq3/0sfp/+7q9v/Uy+j/q5rQ/6aT
168 | zP+bi73/jYCp/8i26/+2p9f/sKHN/8S15f/BsuT/v6/j/7Wk2v+ql9D/oI7G/4Jzov9kWHr/YVZu/35x
169 | hf+DdYX/fnGA/2JYY/9aUV77Zltz+3Vrjv1XT2b/AwMEbgAAAAAAAAAAICAp08S23//AsuD/tKTX/7Si
170 | 2P+jlMP/U0xk/3lwiv+5q9X/0MHw/8y87P+3qNj/saLS/7en3P+zotn/r53U/6mWz/+lk8r/oo/H/5yK
171 | wv+aiMD/k4K3/459sf+QfrL/h3eo/5SCuP+kksr/lIev/xIRFbcBAQEKAAAAAAAAAAAsKjbxsqnX/4eL
172 | vP9/dJf/SUNW8xYVG88gHSXfqp7E/9XF8//RwvH/zL3t/8a36f/AsOP/ppXK/56Mwv+lk8v/pZLL/52L
173 | w/+ejMP/moe//5qHv/+bicD/m4nB/52Kw/+disP/nIvB/5GErf8dGyLlAAAALgAAAAAAAAAAAAAAAAcb
174 | LMEbKDvJChQfrQQEBWoBAQEwAQEBBgAAAFwjICnzraDI/9HC8f/Nvu7/yrvs/8S05v+yodj/pJHJ/5SE
175 | t/+FdqT/fm+b/4FyoP+Hd6f/hXam/31vm/92aJL/aFyB/1dObP8iHin5DAsPwQEBAVCzoK8CAAAAAAAA
176 | AAAAAAAACE1/BgZNfwgHTn8AAAAAAAAAAAAAAAAAAQEBAAEBATIZFx3Te3GP/8i56f/IuOz/tqXc/6uY
177 | 0f+tmtP/r53W/6mXzv+LfKr/cGOK/2VZff9tYYb/cGOK/1ZMav9rX4L/VExl/QEBAWIBAQEGAAAAAAAA
178 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBARIAAACHERAU2zUv
179 | QO1IQFj7XlNy/2hdf/9rYIL/aF1+/29kiP9vY4n/hnek/4l6p/+KfKb/t6zM/8zB4/8qJjP5AQEBOgAA
180 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
181 | AAABAQEQAQEBJAEBAUABAQFSAQEBZAEBAXABAQF0AAAAjSwoNfm+reT/s6HZ/8zB4v/18/v/tqrP/wMC
182 | A8sBAQEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEIBQQG45KGr/+8quP/xbrd/+ji
184 | 8/9yZ4n/AQEBeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6RD1R/8Gv
186 | 5//Ctt3/u7DS/yMgKu8BAQEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB
188 | ARYHBgjniHui/7em2/9fV3D/AgIDfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
190 | AAAAAAAAAQEBAAEBAUoMCw75KCQx/QYFB7EBAQEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
192 | AAAAAAAAAAAAAAAAAAAAAAAAAQEBAgEBAUIBAQFIAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
193 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
195 | AAAAAAAAAAAAAAAAAAAAAAAA/////////////////+AH//8AAH/+AAAf/AAAD/wAAAf4AAAD+AAAAfgA
196 | AAH4AAAA+AAAAPAAAADwAAAB4AAAA8AAAAOAAAADgAAAAwAAAAcAAAAHAAAADx4AAB//AAB//4AAf///
197 | gH///8D////g////4f////H///////////8=
198 |
199 |
200 |
201 | 17, 17
202 |
203 |
204 | 136, 17
205 |
206 |
207 | 277, 17
208 |
209 |
210 | 419, 17
211 |
212 |
213 | 634, 17
214 |
215 |
216 | 795, 17
217 |
218 |
--------------------------------------------------------------------------------
/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\assets\save_.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\assets\home.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\assets\settings_.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\assets\victroy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\assets\launch.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
137 | ..\assets\bilibili.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
138 |
139 |
140 | ..\assets\refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
141 |
142 |
143 | ..\assets\game.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
144 |
145 |
146 | ..\assets\settings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
147 |
148 |
149 | ..\assets\folder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
150 |
151 |
152 | ..\assets\titlescreen_home_.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
153 |
154 |
155 | ..\assets\PvZ_Logo_zh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
156 |
157 |
158 | ..\assets\cancel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
159 |
160 |
161 | ..\assets\error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
162 |
163 |
164 | ..\assets\PvzToolkit_.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
165 |
166 |
167 | ..\assets\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
168 |
169 |
170 | ..\assets\gitee.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
171 |
172 |
173 | ..\assets\edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
174 |
175 |
176 | ..\assets\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
177 |
178 |
179 | ..\assets\done.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
180 |
181 |
182 | ..\assets\qq.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
183 |
184 |
185 | ..\assets\titlescreen_home.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
186 |
187 |
188 | ..\assets\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
189 |
190 |
191 | ..\assets\PvZ_Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
192 |
193 |
194 | ..\assets\github.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
195 |
196 |
197 | ..\assets\icon_outline.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
198 |
199 |
200 | ..\assets\update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
201 |
202 |
203 | ..\assets\replace.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
204 |
205 |
206 | ..\assets\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
207 |
208 |
209 | ..\assets\download.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
210 |
211 |
212 | ..\assets\select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
213 |
214 |
215 | ..\assets\titlescreen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
216 |
217 |
218 | ..\assets\alphatest.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
219 |
220 |
221 | ..\assets\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
222 |
223 |
224 | ..\assets\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
225 |
226 |
227 | ..\assets\PvzToolkit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
228 |
229 |
230 | ..\assets\miss_texture.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
231 |
232 |
--------------------------------------------------------------------------------
/SetGame_Window.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PvzLauncher
2 | {
3 | partial class SetGame_Window
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.pageHeader1 = new AntdUI.PageHeader();
33 | this.label_GameName = new AntdUI.Label();
34 | this.label_GamePath = new AntdUI.Label();
35 | this.label_ExecuteName = new AntdUI.Label();
36 | this.input_ExecuteName = new AntdUI.Input();
37 | this.button_ExecuteName_Browser = new AntdUI.Button();
38 | this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
39 | this.timer = new System.Windows.Forms.Timer(this.components);
40 | this.panel_Info = new AntdUI.Panel();
41 | this.label_FirstLaunch = new AntdUI.Label();
42 | this.label_PlayTime = new AntdUI.Label();
43 | this.label_Info = new AntdUI.Label();
44 | this.button_Pak = new AntdUI.Button();
45 | this.button_OpenGameFoler = new AntdUI.Button();
46 | this.button_DeleteGame = new AntdUI.Button();
47 | this.button_SetName = new AntdUI.Button();
48 | this.image3D_GameIcon = new AntdUI.Image3D();
49 | this.button_RePak = new AntdUI.Button();
50 | this.openFileDialog_pak = new System.Windows.Forms.OpenFileDialog();
51 | this.panel_Info.SuspendLayout();
52 | this.SuspendLayout();
53 | //
54 | // pageHeader1
55 | //
56 | this.pageHeader1.HandCursor = System.Windows.Forms.Cursors.Default;
57 | this.pageHeader1.Location = new System.Drawing.Point(0, 0);
58 | this.pageHeader1.MaximizeBox = false;
59 | this.pageHeader1.MinimizeBox = false;
60 | this.pageHeader1.Name = "pageHeader1";
61 | this.pageHeader1.ShowButton = true;
62 | this.pageHeader1.Size = new System.Drawing.Size(816, 30);
63 | this.pageHeader1.TabIndex = 0;
64 | this.pageHeader1.Text = "版本设置";
65 | //
66 | // label_GameName
67 | //
68 | this.label_GameName.Location = new System.Drawing.Point(70, 36);
69 | this.label_GameName.Name = "label_GameName";
70 | this.label_GameName.Size = new System.Drawing.Size(726, 23);
71 | this.label_GameName.TabIndex = 2;
72 | this.label_GameName.Text = "游戏名称:";
73 | //
74 | // label_GamePath
75 | //
76 | this.label_GamePath.Location = new System.Drawing.Point(70, 65);
77 | this.label_GamePath.Name = "label_GamePath";
78 | this.label_GamePath.Size = new System.Drawing.Size(726, 23);
79 | this.label_GamePath.TabIndex = 3;
80 | this.label_GamePath.Text = "游戏路径:";
81 | //
82 | // label_ExecuteName
83 | //
84 | this.label_ExecuteName.Location = new System.Drawing.Point(12, 137);
85 | this.label_ExecuteName.Name = "label_ExecuteName";
86 | this.label_ExecuteName.Size = new System.Drawing.Size(121, 30);
87 | this.label_ExecuteName.TabIndex = 6;
88 | this.label_ExecuteName.Text = "游戏可执行文件名称:";
89 | //
90 | // input_ExecuteName
91 | //
92 | this.input_ExecuteName.HandCursor = System.Windows.Forms.Cursors.Default;
93 | this.input_ExecuteName.Location = new System.Drawing.Point(139, 137);
94 | this.input_ExecuteName.Name = "input_ExecuteName";
95 | this.input_ExecuteName.Size = new System.Drawing.Size(552, 30);
96 | this.input_ExecuteName.TabIndex = 7;
97 | this.input_ExecuteName.Text = "Unknown";
98 | this.input_ExecuteName.TextChanged += new System.EventHandler(this.input_ExecuteName_TextChanged);
99 | //
100 | // button_ExecuteName_Browser
101 | //
102 | this.button_ExecuteName_Browser.HandCursor = System.Windows.Forms.Cursors.Default;
103 | this.button_ExecuteName_Browser.Location = new System.Drawing.Point(697, 137);
104 | this.button_ExecuteName_Browser.Name = "button_ExecuteName_Browser";
105 | this.button_ExecuteName_Browser.Size = new System.Drawing.Size(99, 30);
106 | this.button_ExecuteName_Browser.TabIndex = 8;
107 | this.button_ExecuteName_Browser.Text = "浏览...";
108 | this.button_ExecuteName_Browser.Click += new System.EventHandler(this.button_ExecuteName_Browser_Click);
109 | //
110 | // openFileDialog
111 | //
112 | this.openFileDialog.FileName = "openFileDialog";
113 | this.openFileDialog.Filter = "可执行文件|*.exe";
114 | //
115 | // timer
116 | //
117 | this.timer.Enabled = true;
118 | this.timer.Interval = 10;
119 | this.timer.Tick += new System.EventHandler(this.timer_Tick);
120 | //
121 | // panel_Info
122 | //
123 | this.panel_Info.Controls.Add(this.label_FirstLaunch);
124 | this.panel_Info.Controls.Add(this.label_PlayTime);
125 | this.panel_Info.Controls.Add(this.label_Info);
126 | this.panel_Info.HandCursor = System.Windows.Forms.Cursors.Default;
127 | this.panel_Info.Location = new System.Drawing.Point(12, 173);
128 | this.panel_Info.Name = "panel_Info";
129 | this.panel_Info.Size = new System.Drawing.Size(792, 132);
130 | this.panel_Info.TabIndex = 10;
131 | //
132 | // label_FirstLaunch
133 | //
134 | this.label_FirstLaunch.BackColor = System.Drawing.Color.Transparent;
135 | this.label_FirstLaunch.HandCursor = System.Windows.Forms.Cursors.Default;
136 | this.label_FirstLaunch.Location = new System.Drawing.Point(5, 65);
137 | this.label_FirstLaunch.Name = "label_FirstLaunch";
138 | this.label_FirstLaunch.Size = new System.Drawing.Size(776, 23);
139 | this.label_FirstLaunch.TabIndex = 2;
140 | this.label_FirstLaunch.Text = "初次启动: UNKNOWN";
141 | //
142 | // label_PlayTime
143 | //
144 | this.label_PlayTime.BackColor = System.Drawing.Color.Transparent;
145 | this.label_PlayTime.HandCursor = System.Windows.Forms.Cursors.Default;
146 | this.label_PlayTime.Location = new System.Drawing.Point(5, 41);
147 | this.label_PlayTime.Name = "label_PlayTime";
148 | this.label_PlayTime.Size = new System.Drawing.Size(776, 23);
149 | this.label_PlayTime.TabIndex = 1;
150 | this.label_PlayTime.Text = "游玩时间: UNKNOWN 分钟";
151 | //
152 | // label_Info
153 | //
154 | this.label_Info.BackColor = System.Drawing.Color.Transparent;
155 | this.label_Info.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
156 | this.label_Info.HandCursor = System.Windows.Forms.Cursors.Default;
157 | this.label_Info.Location = new System.Drawing.Point(5, 5);
158 | this.label_Info.Name = "label_Info";
159 | this.label_Info.Size = new System.Drawing.Size(120, 30);
160 | this.label_Info.TabIndex = 0;
161 | this.label_Info.Text = "统计信息";
162 | //
163 | // button_Pak
164 | //
165 | this.button_Pak.HandCursor = System.Windows.Forms.Cursors.Default;
166 | this.button_Pak.Icon = global::PvzLauncher.Properties.Resources.replace;
167 | this.button_Pak.IconRatio = 0.8F;
168 | this.button_Pak.Location = new System.Drawing.Point(486, 94);
169 | this.button_Pak.Name = "button_Pak";
170 | this.button_Pak.Size = new System.Drawing.Size(152, 37);
171 | this.button_Pak.TabIndex = 11;
172 | this.button_Pak.Text = "替换pak文件";
173 | this.button_Pak.Type = AntdUI.TTypeMini.Warn;
174 | this.button_Pak.Click += new System.EventHandler(this.button_Pak_Click);
175 | //
176 | // button_OpenGameFoler
177 | //
178 | this.button_OpenGameFoler.HandCursor = System.Windows.Forms.Cursors.Default;
179 | this.button_OpenGameFoler.Icon = global::PvzLauncher.Properties.Resources.folder;
180 | this.button_OpenGameFoler.IconRatio = 0.8F;
181 | this.button_OpenGameFoler.Location = new System.Drawing.Point(170, 94);
182 | this.button_OpenGameFoler.Name = "button_OpenGameFoler";
183 | this.button_OpenGameFoler.Size = new System.Drawing.Size(152, 37);
184 | this.button_OpenGameFoler.TabIndex = 9;
185 | this.button_OpenGameFoler.Text = "打开游戏文件夹";
186 | this.button_OpenGameFoler.Type = AntdUI.TTypeMini.Primary;
187 | this.button_OpenGameFoler.Click += new System.EventHandler(this.button_OpenGameFoler_Click);
188 | //
189 | // button_DeleteGame
190 | //
191 | this.button_DeleteGame.HandCursor = System.Windows.Forms.Cursors.Default;
192 | this.button_DeleteGame.Icon = global::PvzLauncher.Properties.Resources.delete;
193 | this.button_DeleteGame.IconRatio = 0.8F;
194 | this.button_DeleteGame.Location = new System.Drawing.Point(328, 94);
195 | this.button_DeleteGame.Name = "button_DeleteGame";
196 | this.button_DeleteGame.Size = new System.Drawing.Size(152, 37);
197 | this.button_DeleteGame.TabIndex = 5;
198 | this.button_DeleteGame.Text = "删除游戏";
199 | this.button_DeleteGame.Type = AntdUI.TTypeMini.Error;
200 | this.button_DeleteGame.Click += new System.EventHandler(this.button_DeleteGame_Click);
201 | //
202 | // button_SetName
203 | //
204 | this.button_SetName.HandCursor = System.Windows.Forms.Cursors.Default;
205 | this.button_SetName.Icon = global::PvzLauncher.Properties.Resources.edit;
206 | this.button_SetName.IconRatio = 0.8F;
207 | this.button_SetName.Location = new System.Drawing.Point(12, 94);
208 | this.button_SetName.Name = "button_SetName";
209 | this.button_SetName.Size = new System.Drawing.Size(152, 37);
210 | this.button_SetName.TabIndex = 4;
211 | this.button_SetName.Text = "更改游戏名称";
212 | this.button_SetName.Type = AntdUI.TTypeMini.Primary;
213 | this.button_SetName.Click += new System.EventHandler(this.button_SetName_Click);
214 | //
215 | // image3D_GameIcon
216 | //
217 | this.image3D_GameIcon.HandCursor = System.Windows.Forms.Cursors.Default;
218 | this.image3D_GameIcon.Image = global::PvzLauncher.Properties.Resources.icon;
219 | this.image3D_GameIcon.Location = new System.Drawing.Point(12, 36);
220 | this.image3D_GameIcon.Name = "image3D_GameIcon";
221 | this.image3D_GameIcon.Size = new System.Drawing.Size(52, 52);
222 | this.image3D_GameIcon.TabIndex = 1;
223 | this.image3D_GameIcon.Text = "image3D1";
224 | //
225 | // button_RePak
226 | //
227 | this.button_RePak.HandCursor = System.Windows.Forms.Cursors.Default;
228 | this.button_RePak.Icon = global::PvzLauncher.Properties.Resources.refresh;
229 | this.button_RePak.IconRatio = 1F;
230 | this.button_RePak.Location = new System.Drawing.Point(644, 94);
231 | this.button_RePak.Name = "button_RePak";
232 | this.button_RePak.Size = new System.Drawing.Size(152, 37);
233 | this.button_RePak.TabIndex = 12;
234 | this.button_RePak.Text = "恢复pak文件";
235 | this.button_RePak.Type = AntdUI.TTypeMini.Warn;
236 | this.button_RePak.Click += new System.EventHandler(this.button_RePak_Click);
237 | //
238 | // openFileDialog_pak
239 | //
240 | this.openFileDialog_pak.Filter = "植物大战僵尸pak文件|*.pak";
241 | this.openFileDialog_pak.Title = "请选择有效的pak文件";
242 | //
243 | // SetGame_Window
244 | //
245 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
246 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
247 | this.ClientSize = new System.Drawing.Size(816, 317);
248 | this.Controls.Add(this.button_RePak);
249 | this.Controls.Add(this.button_Pak);
250 | this.Controls.Add(this.panel_Info);
251 | this.Controls.Add(this.button_OpenGameFoler);
252 | this.Controls.Add(this.button_ExecuteName_Browser);
253 | this.Controls.Add(this.input_ExecuteName);
254 | this.Controls.Add(this.label_ExecuteName);
255 | this.Controls.Add(this.button_DeleteGame);
256 | this.Controls.Add(this.button_SetName);
257 | this.Controls.Add(this.label_GamePath);
258 | this.Controls.Add(this.label_GameName);
259 | this.Controls.Add(this.image3D_GameIcon);
260 | this.Controls.Add(this.pageHeader1);
261 | this.EnableHitTest = false;
262 | this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
263 | this.Margin = new System.Windows.Forms.Padding(4);
264 | this.MaximizeBox = false;
265 | this.MinimizeBox = false;
266 | this.MinimumSize = new System.Drawing.Size(753, 317);
267 | this.Name = "SetGame_Window";
268 | this.Resizable = false;
269 | this.ShowInTaskbar = false;
270 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
271 | this.Text = "SetGame_Window";
272 | this.Load += new System.EventHandler(this.SetGame_Window_Load);
273 | this.panel_Info.ResumeLayout(false);
274 | this.ResumeLayout(false);
275 |
276 | }
277 |
278 | #endregion
279 |
280 | private AntdUI.PageHeader pageHeader1;
281 | private AntdUI.Image3D image3D_GameIcon;
282 | private AntdUI.Label label_GameName;
283 | private AntdUI.Label label_GamePath;
284 | private AntdUI.Button button_SetName;
285 | private AntdUI.Button button_DeleteGame;
286 | private AntdUI.Label label_ExecuteName;
287 | private AntdUI.Input input_ExecuteName;
288 | private AntdUI.Button button_ExecuteName_Browser;
289 | private AntdUI.Button button_OpenGameFoler;
290 | private System.Windows.Forms.OpenFileDialog openFileDialog;
291 | private System.Windows.Forms.Timer timer;
292 | private AntdUI.Panel panel_Info;
293 | private AntdUI.Label label_Info;
294 | private AntdUI.Label label_PlayTime;
295 | private AntdUI.Label label_FirstLaunch;
296 | private AntdUI.Button button_Pak;
297 | private AntdUI.Button button_RePak;
298 | private System.Windows.Forms.OpenFileDialog openFileDialog_pak;
299 | }
300 | }
--------------------------------------------------------------------------------
/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PvzLauncher.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// 一个强类型的资源类,用于查找本地化的字符串等。
17 | ///
18 | // 此类是由 StronglyTypedResourceBuilder
19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 | // (以 /str 作为命令选项),或重新生成 VS 项目。
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// 返回此类使用的缓存的 ResourceManager 实例。
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PvzLauncher.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// 重写当前线程的 CurrentUICulture 属性,对
51 | /// 使用此强类型资源类的所有资源查找执行重写。
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
65 | ///
66 | internal static System.Drawing.Bitmap about {
67 | get {
68 | object obj = ResourceManager.GetObject("about", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
75 | ///
76 | internal static System.Drawing.Bitmap add {
77 | get {
78 | object obj = ResourceManager.GetObject("add", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
85 | ///
86 | internal static System.Drawing.Bitmap alphatest {
87 | get {
88 | object obj = ResourceManager.GetObject("alphatest", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
95 | ///
96 | internal static System.Drawing.Bitmap bilibili {
97 | get {
98 | object obj = ResourceManager.GetObject("bilibili", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
105 | ///
106 | internal static System.Drawing.Bitmap cancel {
107 | get {
108 | object obj = ResourceManager.GetObject("cancel", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 |
113 | ///
114 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
115 | ///
116 | internal static System.Drawing.Bitmap close {
117 | get {
118 | object obj = ResourceManager.GetObject("close", resourceCulture);
119 | return ((System.Drawing.Bitmap)(obj));
120 | }
121 | }
122 |
123 | ///
124 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
125 | ///
126 | internal static System.Drawing.Bitmap delete {
127 | get {
128 | object obj = ResourceManager.GetObject("delete", resourceCulture);
129 | return ((System.Drawing.Bitmap)(obj));
130 | }
131 | }
132 |
133 | ///
134 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
135 | ///
136 | internal static System.Drawing.Bitmap done {
137 | get {
138 | object obj = ResourceManager.GetObject("done", resourceCulture);
139 | return ((System.Drawing.Bitmap)(obj));
140 | }
141 | }
142 |
143 | ///
144 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
145 | ///
146 | internal static System.Drawing.Bitmap download {
147 | get {
148 | object obj = ResourceManager.GetObject("download", resourceCulture);
149 | return ((System.Drawing.Bitmap)(obj));
150 | }
151 | }
152 |
153 | ///
154 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
155 | ///
156 | internal static System.Drawing.Bitmap edit {
157 | get {
158 | object obj = ResourceManager.GetObject("edit", resourceCulture);
159 | return ((System.Drawing.Bitmap)(obj));
160 | }
161 | }
162 |
163 | ///
164 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
165 | ///
166 | internal static System.Drawing.Bitmap error {
167 | get {
168 | object obj = ResourceManager.GetObject("error", resourceCulture);
169 | return ((System.Drawing.Bitmap)(obj));
170 | }
171 | }
172 |
173 | ///
174 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
175 | ///
176 | internal static System.Drawing.Bitmap folder {
177 | get {
178 | object obj = ResourceManager.GetObject("folder", resourceCulture);
179 | return ((System.Drawing.Bitmap)(obj));
180 | }
181 | }
182 |
183 | ///
184 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
185 | ///
186 | internal static System.Drawing.Bitmap game {
187 | get {
188 | object obj = ResourceManager.GetObject("game", resourceCulture);
189 | return ((System.Drawing.Bitmap)(obj));
190 | }
191 | }
192 |
193 | ///
194 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
195 | ///
196 | internal static System.Drawing.Bitmap gitee {
197 | get {
198 | object obj = ResourceManager.GetObject("gitee", resourceCulture);
199 | return ((System.Drawing.Bitmap)(obj));
200 | }
201 | }
202 |
203 | ///
204 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
205 | ///
206 | internal static System.Drawing.Bitmap github {
207 | get {
208 | object obj = ResourceManager.GetObject("github", resourceCulture);
209 | return ((System.Drawing.Bitmap)(obj));
210 | }
211 | }
212 |
213 | ///
214 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
215 | ///
216 | internal static System.Drawing.Bitmap home {
217 | get {
218 | object obj = ResourceManager.GetObject("home", resourceCulture);
219 | return ((System.Drawing.Bitmap)(obj));
220 | }
221 | }
222 |
223 | ///
224 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
225 | ///
226 | internal static System.Drawing.Bitmap icon {
227 | get {
228 | object obj = ResourceManager.GetObject("icon", resourceCulture);
229 | return ((System.Drawing.Bitmap)(obj));
230 | }
231 | }
232 |
233 | ///
234 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
235 | ///
236 | internal static System.Drawing.Bitmap icon_outline {
237 | get {
238 | object obj = ResourceManager.GetObject("icon_outline", resourceCulture);
239 | return ((System.Drawing.Bitmap)(obj));
240 | }
241 | }
242 |
243 | ///
244 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
245 | ///
246 | internal static System.Drawing.Bitmap launch {
247 | get {
248 | object obj = ResourceManager.GetObject("launch", resourceCulture);
249 | return ((System.Drawing.Bitmap)(obj));
250 | }
251 | }
252 |
253 | ///
254 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
255 | ///
256 | internal static System.Drawing.Bitmap miss_texture {
257 | get {
258 | object obj = ResourceManager.GetObject("miss_texture", resourceCulture);
259 | return ((System.Drawing.Bitmap)(obj));
260 | }
261 | }
262 |
263 | ///
264 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
265 | ///
266 | internal static System.Drawing.Bitmap PvZ_Logo {
267 | get {
268 | object obj = ResourceManager.GetObject("PvZ_Logo", resourceCulture);
269 | return ((System.Drawing.Bitmap)(obj));
270 | }
271 | }
272 |
273 | ///
274 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
275 | ///
276 | internal static System.Drawing.Bitmap PvZ_Logo_zh {
277 | get {
278 | object obj = ResourceManager.GetObject("PvZ_Logo_zh", resourceCulture);
279 | return ((System.Drawing.Bitmap)(obj));
280 | }
281 | }
282 |
283 | ///
284 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
285 | ///
286 | internal static System.Drawing.Bitmap PvzToolkit {
287 | get {
288 | object obj = ResourceManager.GetObject("PvzToolkit", resourceCulture);
289 | return ((System.Drawing.Bitmap)(obj));
290 | }
291 | }
292 |
293 | ///
294 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
295 | ///
296 | internal static System.Drawing.Bitmap PvzToolkit_ {
297 | get {
298 | object obj = ResourceManager.GetObject("PvzToolkit_", resourceCulture);
299 | return ((System.Drawing.Bitmap)(obj));
300 | }
301 | }
302 |
303 | ///
304 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
305 | ///
306 | internal static System.Drawing.Bitmap qq {
307 | get {
308 | object obj = ResourceManager.GetObject("qq", resourceCulture);
309 | return ((System.Drawing.Bitmap)(obj));
310 | }
311 | }
312 |
313 | ///
314 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
315 | ///
316 | internal static System.Drawing.Bitmap refresh {
317 | get {
318 | object obj = ResourceManager.GetObject("refresh", resourceCulture);
319 | return ((System.Drawing.Bitmap)(obj));
320 | }
321 | }
322 |
323 | ///
324 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
325 | ///
326 | internal static System.Drawing.Bitmap replace {
327 | get {
328 | object obj = ResourceManager.GetObject("replace", resourceCulture);
329 | return ((System.Drawing.Bitmap)(obj));
330 | }
331 | }
332 |
333 | ///
334 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
335 | ///
336 | internal static System.Drawing.Bitmap save {
337 | get {
338 | object obj = ResourceManager.GetObject("save", resourceCulture);
339 | return ((System.Drawing.Bitmap)(obj));
340 | }
341 | }
342 |
343 | ///
344 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
345 | ///
346 | internal static System.Drawing.Bitmap save_ {
347 | get {
348 | object obj = ResourceManager.GetObject("save_", resourceCulture);
349 | return ((System.Drawing.Bitmap)(obj));
350 | }
351 | }
352 |
353 | ///
354 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
355 | ///
356 | internal static System.Drawing.Bitmap select {
357 | get {
358 | object obj = ResourceManager.GetObject("select", resourceCulture);
359 | return ((System.Drawing.Bitmap)(obj));
360 | }
361 | }
362 |
363 | ///
364 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
365 | ///
366 | internal static System.Drawing.Bitmap settings {
367 | get {
368 | object obj = ResourceManager.GetObject("settings", resourceCulture);
369 | return ((System.Drawing.Bitmap)(obj));
370 | }
371 | }
372 |
373 | ///
374 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
375 | ///
376 | internal static System.Drawing.Bitmap settings_ {
377 | get {
378 | object obj = ResourceManager.GetObject("settings_", resourceCulture);
379 | return ((System.Drawing.Bitmap)(obj));
380 | }
381 | }
382 |
383 | ///
384 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
385 | ///
386 | internal static System.Drawing.Bitmap titlescreen {
387 | get {
388 | object obj = ResourceManager.GetObject("titlescreen", resourceCulture);
389 | return ((System.Drawing.Bitmap)(obj));
390 | }
391 | }
392 |
393 | ///
394 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
395 | ///
396 | internal static System.Drawing.Bitmap titlescreen_home {
397 | get {
398 | object obj = ResourceManager.GetObject("titlescreen_home", resourceCulture);
399 | return ((System.Drawing.Bitmap)(obj));
400 | }
401 | }
402 |
403 | ///
404 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
405 | ///
406 | internal static System.Drawing.Bitmap titlescreen_home_ {
407 | get {
408 | object obj = ResourceManager.GetObject("titlescreen_home_", resourceCulture);
409 | return ((System.Drawing.Bitmap)(obj));
410 | }
411 | }
412 |
413 | ///
414 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
415 | ///
416 | internal static System.Drawing.Bitmap update {
417 | get {
418 | object obj = ResourceManager.GetObject("update", resourceCulture);
419 | return ((System.Drawing.Bitmap)(obj));
420 | }
421 | }
422 |
423 | ///
424 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。
425 | ///
426 | internal static System.Drawing.Bitmap victroy {
427 | get {
428 | object obj = ResourceManager.GetObject("victroy", resourceCulture);
429 | return ((System.Drawing.Bitmap)(obj));
430 | }
431 | }
432 | }
433 | }
434 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Mozilla Public License Version 2.0
2 | ==================================
3 |
4 | 1. Definitions
5 | --------------
6 |
7 | 1.1. "Contributor"
8 | means each individual or legal entity that creates, contributes to
9 | the creation of, or owns Covered Software.
10 |
11 | 1.2. "Contributor Version"
12 | means the combination of the Contributions of others (if any) used
13 | by a Contributor and that particular Contributor's Contribution.
14 |
15 | 1.3. "Contribution"
16 | means Covered Software of a particular Contributor.
17 |
18 | 1.4. "Covered Software"
19 | means Source Code Form to which the initial Contributor has attached
20 | the notice in Exhibit A, the Executable Form of such Source Code
21 | Form, and Modifications of such Source Code Form, in each case
22 | including portions thereof.
23 |
24 | 1.5. "Incompatible With Secondary Licenses"
25 | means
26 |
27 | (a) that the initial Contributor has attached the notice described
28 | in Exhibit B to the Covered Software; or
29 |
30 | (b) that the Covered Software was made available under the terms of
31 | version 1.1 or earlier of the License, but not also under the
32 | terms of a Secondary License.
33 |
34 | 1.6. "Executable Form"
35 | means any form of the work other than Source Code Form.
36 |
37 | 1.7. "Larger Work"
38 | means a work that combines Covered Software with other material, in
39 | a separate file or files, that is not Covered Software.
40 |
41 | 1.8. "License"
42 | means this document.
43 |
44 | 1.9. "Licensable"
45 | means having the right to grant, to the maximum extent possible,
46 | whether at the time of the initial grant or subsequently, any and
47 | all of the rights conveyed by this License.
48 |
49 | 1.10. "Modifications"
50 | means any of the following:
51 |
52 | (a) any file in Source Code Form that results from an addition to,
53 | deletion from, or modification of the contents of Covered
54 | Software; or
55 |
56 | (b) any new file in Source Code Form that contains any Covered
57 | Software.
58 |
59 | 1.11. "Patent Claims" of a Contributor
60 | means any patent claim(s), including without limitation, method,
61 | process, and apparatus claims, in any patent Licensable by such
62 | Contributor that would be infringed, but for the grant of the
63 | License, by the making, using, selling, offering for sale, having
64 | made, import, or transfer of either its Contributions or its
65 | Contributor Version.
66 |
67 | 1.12. "Secondary License"
68 | means either the GNU General Public License, Version 2.0, the GNU
69 | Lesser General Public License, Version 2.1, the GNU Affero General
70 | Public License, Version 3.0, or any later versions of those
71 | licenses.
72 |
73 | 1.13. "Source Code Form"
74 | means the form of the work preferred for making modifications.
75 |
76 | 1.14. "You" (or "Your")
77 | means an individual or a legal entity exercising rights under this
78 | License. For legal entities, "You" includes any entity that
79 | controls, is controlled by, or is under common control with You. For
80 | purposes of this definition, "control" means (a) the power, direct
81 | or indirect, to cause the direction or management of such entity,
82 | whether by contract or otherwise, or (b) ownership of more than
83 | fifty percent (50%) of the outstanding shares or beneficial
84 | ownership of such entity.
85 |
86 | 2. License Grants and Conditions
87 | --------------------------------
88 |
89 | 2.1. Grants
90 |
91 | Each Contributor hereby grants You a world-wide, royalty-free,
92 | non-exclusive license:
93 |
94 | (a) under intellectual property rights (other than patent or trademark)
95 | Licensable by such Contributor to use, reproduce, make available,
96 | modify, display, perform, distribute, and otherwise exploit its
97 | Contributions, either on an unmodified basis, with Modifications, or
98 | as part of a Larger Work; and
99 |
100 | (b) under Patent Claims of such Contributor to make, use, sell, offer
101 | for sale, have made, import, and otherwise transfer either its
102 | Contributions or its Contributor Version.
103 |
104 | 2.2. Effective Date
105 |
106 | The licenses granted in Section 2.1 with respect to any Contribution
107 | become effective for each Contribution on the date the Contributor first
108 | distributes such Contribution.
109 |
110 | 2.3. Limitations on Grant Scope
111 |
112 | The licenses granted in this Section 2 are the only rights granted under
113 | this License. No additional rights or licenses will be implied from the
114 | distribution or licensing of Covered Software under this License.
115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a
116 | Contributor:
117 |
118 | (a) for any code that a Contributor has removed from Covered Software;
119 | or
120 |
121 | (b) for infringements caused by: (i) Your and any other third party's
122 | modifications of Covered Software, or (ii) the combination of its
123 | Contributions with other software (except as part of its Contributor
124 | Version); or
125 |
126 | (c) under Patent Claims infringed by Covered Software in the absence of
127 | its Contributions.
128 |
129 | This License does not grant any rights in the trademarks, service marks,
130 | or logos of any Contributor (except as may be necessary to comply with
131 | the notice requirements in Section 3.4).
132 |
133 | 2.4. Subsequent Licenses
134 |
135 | No Contributor makes additional grants as a result of Your choice to
136 | distribute the Covered Software under a subsequent version of this
137 | License (see Section 10.2) or under the terms of a Secondary License (if
138 | permitted under the terms of Section 3.3).
139 |
140 | 2.5. Representation
141 |
142 | Each Contributor represents that the Contributor believes its
143 | Contributions are its original creation(s) or it has sufficient rights
144 | to grant the rights to its Contributions conveyed by this License.
145 |
146 | 2.6. Fair Use
147 |
148 | This License is not intended to limit any rights You have under
149 | applicable copyright doctrines of fair use, fair dealing, or other
150 | equivalents.
151 |
152 | 2.7. Conditions
153 |
154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155 | in Section 2.1.
156 |
157 | 3. Responsibilities
158 | -------------------
159 |
160 | 3.1. Distribution of Source Form
161 |
162 | All distribution of Covered Software in Source Code Form, including any
163 | Modifications that You create or to which You contribute, must be under
164 | the terms of this License. You must inform recipients that the Source
165 | Code Form of the Covered Software is governed by the terms of this
166 | License, and how they can obtain a copy of this License. You may not
167 | attempt to alter or restrict the recipients' rights in the Source Code
168 | Form.
169 |
170 | 3.2. Distribution of Executable Form
171 |
172 | If You distribute Covered Software in Executable Form then:
173 |
174 | (a) such Covered Software must also be made available in Source Code
175 | Form, as described in Section 3.1, and You must inform recipients of
176 | the Executable Form how they can obtain a copy of such Source Code
177 | Form by reasonable means in a timely manner, at a charge no more
178 | than the cost of distribution to the recipient; and
179 |
180 | (b) You may distribute such Executable Form under the terms of this
181 | License, or sublicense it under different terms, provided that the
182 | license for the Executable Form does not attempt to limit or alter
183 | the recipients' rights in the Source Code Form under this License.
184 |
185 | 3.3. Distribution of a Larger Work
186 |
187 | You may create and distribute a Larger Work under terms of Your choice,
188 | provided that You also comply with the requirements of this License for
189 | the Covered Software. If the Larger Work is a combination of Covered
190 | Software with a work governed by one or more Secondary Licenses, and the
191 | Covered Software is not Incompatible With Secondary Licenses, this
192 | License permits You to additionally distribute such Covered Software
193 | under the terms of such Secondary License(s), so that the recipient of
194 | the Larger Work may, at their option, further distribute the Covered
195 | Software under the terms of either this License or such Secondary
196 | License(s).
197 |
198 | 3.4. Notices
199 |
200 | You may not remove or alter the substance of any license notices
201 | (including copyright notices, patent notices, disclaimers of warranty,
202 | or limitations of liability) contained within the Source Code Form of
203 | the Covered Software, except that You may alter any license notices to
204 | the extent required to remedy known factual inaccuracies.
205 |
206 | 3.5. Application of Additional Terms
207 |
208 | You may choose to offer, and to charge a fee for, warranty, support,
209 | indemnity or liability obligations to one or more recipients of Covered
210 | Software. However, You may do so only on Your own behalf, and not on
211 | behalf of any Contributor. You must make it absolutely clear that any
212 | such warranty, support, indemnity, or liability obligation is offered by
213 | You alone, and You hereby agree to indemnify every Contributor for any
214 | liability incurred by such Contributor as a result of warranty, support,
215 | indemnity or liability terms You offer. You may include additional
216 | disclaimers of warranty and limitations of liability specific to any
217 | jurisdiction.
218 |
219 | 4. Inability to Comply Due to Statute or Regulation
220 | ---------------------------------------------------
221 |
222 | If it is impossible for You to comply with any of the terms of this
223 | License with respect to some or all of the Covered Software due to
224 | statute, judicial order, or regulation then You must: (a) comply with
225 | the terms of this License to the maximum extent possible; and (b)
226 | describe the limitations and the code they affect. Such description must
227 | be placed in a text file included with all distributions of the Covered
228 | Software under this License. Except to the extent prohibited by statute
229 | or regulation, such description must be sufficiently detailed for a
230 | recipient of ordinary skill to be able to understand it.
231 |
232 | 5. Termination
233 | --------------
234 |
235 | 5.1. The rights granted under this License will terminate automatically
236 | if You fail to comply with any of its terms. However, if You become
237 | compliant, then the rights granted under this License from a particular
238 | Contributor are reinstated (a) provisionally, unless and until such
239 | Contributor explicitly and finally terminates Your grants, and (b) on an
240 | ongoing basis, if such Contributor fails to notify You of the
241 | non-compliance by some reasonable means prior to 60 days after You have
242 | come back into compliance. Moreover, Your grants from a particular
243 | Contributor are reinstated on an ongoing basis if such Contributor
244 | notifies You of the non-compliance by some reasonable means, this is the
245 | first time You have received notice of non-compliance with this License
246 | from such Contributor, and You become compliant prior to 30 days after
247 | Your receipt of the notice.
248 |
249 | 5.2. If You initiate litigation against any entity by asserting a patent
250 | infringement claim (excluding declaratory judgment actions,
251 | counter-claims, and cross-claims) alleging that a Contributor Version
252 | directly or indirectly infringes any patent, then the rights granted to
253 | You by any and all Contributors for the Covered Software under Section
254 | 2.1 of this License shall terminate.
255 |
256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257 | end user license agreements (excluding distributors and resellers) which
258 | have been validly granted by You or Your distributors under this License
259 | prior to termination shall survive termination.
260 |
261 | ************************************************************************
262 | * *
263 | * 6. Disclaimer of Warranty *
264 | * ------------------------- *
265 | * *
266 | * Covered Software is provided under this License on an "as is" *
267 | * basis, without warranty of any kind, either expressed, implied, or *
268 | * statutory, including, without limitation, warranties that the *
269 | * Covered Software is free of defects, merchantable, fit for a *
270 | * particular purpose or non-infringing. The entire risk as to the *
271 | * quality and performance of the Covered Software is with You. *
272 | * Should any Covered Software prove defective in any respect, You *
273 | * (not any Contributor) assume the cost of any necessary servicing, *
274 | * repair, or correction. This disclaimer of warranty constitutes an *
275 | * essential part of this License. No use of any Covered Software is *
276 | * authorized under this License except under this disclaimer. *
277 | * *
278 | ************************************************************************
279 |
280 | ************************************************************************
281 | * *
282 | * 7. Limitation of Liability *
283 | * -------------------------- *
284 | * *
285 | * Under no circumstances and under no legal theory, whether tort *
286 | * (including negligence), contract, or otherwise, shall any *
287 | * Contributor, or anyone who distributes Covered Software as *
288 | * permitted above, be liable to You for any direct, indirect, *
289 | * special, incidental, or consequential damages of any character *
290 | * including, without limitation, damages for lost profits, loss of *
291 | * goodwill, work stoppage, computer failure or malfunction, or any *
292 | * and all other commercial damages or losses, even if such party *
293 | * shall have been informed of the possibility of such damages. This *
294 | * limitation of liability shall not apply to liability for death or *
295 | * personal injury resulting from such party's negligence to the *
296 | * extent applicable law prohibits such limitation. Some *
297 | * jurisdictions do not allow the exclusion or limitation of *
298 | * incidental or consequential damages, so this exclusion and *
299 | * limitation may not apply to You. *
300 | * *
301 | ************************************************************************
302 |
303 | 8. Litigation
304 | -------------
305 |
306 | Any litigation relating to this License may be brought only in the
307 | courts of a jurisdiction where the defendant maintains its principal
308 | place of business and such litigation shall be governed by laws of that
309 | jurisdiction, without reference to its conflict-of-law provisions.
310 | Nothing in this Section shall prevent a party's ability to bring
311 | cross-claims or counter-claims.
312 |
313 | 9. Miscellaneous
314 | ----------------
315 |
316 | This License represents the complete agreement concerning the subject
317 | matter hereof. If any provision of this License is held to be
318 | unenforceable, such provision shall be reformed only to the extent
319 | necessary to make it enforceable. Any law or regulation which provides
320 | that the language of a contract shall be construed against the drafter
321 | shall not be used to construe this License against a Contributor.
322 |
323 | 10. Versions of the License
324 | ---------------------------
325 |
326 | 10.1. New Versions
327 |
328 | Mozilla Foundation is the license steward. Except as provided in Section
329 | 10.3, no one other than the license steward has the right to modify or
330 | publish new versions of this License. Each version will be given a
331 | distinguishing version number.
332 |
333 | 10.2. Effect of New Versions
334 |
335 | You may distribute the Covered Software under the terms of the version
336 | of the License under which You originally received the Covered Software,
337 | or under the terms of any subsequent version published by the license
338 | steward.
339 |
340 | 10.3. Modified Versions
341 |
342 | If you create software not governed by this License, and you want to
343 | create a new license for such software, you may create and use a
344 | modified version of this License if you rename the license and remove
345 | any references to the name of the license steward (except to note that
346 | such modified license differs from this License).
347 |
348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary
349 | Licenses
350 |
351 | If You choose to distribute Source Code Form that is Incompatible With
352 | Secondary Licenses under the terms of this version of the License, the
353 | notice described in Exhibit B of this License must be attached.
354 |
355 | Exhibit A - Source Code Form License Notice
356 | -------------------------------------------
357 |
358 | This Source Code Form is subject to the terms of the Mozilla Public
359 | License, v. 2.0. If a copy of the MPL was not distributed with this
360 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
361 |
362 | If it is not possible or desirable to put the notice in a particular
363 | file, then You may include the notice in a location (such as a LICENSE
364 | file in a relevant directory) where a recipient would be likely to look
365 | for such a notice.
366 |
367 | You may add additional accurate notices of copyright ownership.
368 |
369 | Exhibit B - "Incompatible With Secondary Licenses" Notice
370 | ---------------------------------------------------------
371 |
372 | This Source Code Form is "Incompatible With Secondary Licenses", as
373 | defined by the Mozilla Public License, v. 2.0.
374 |
--------------------------------------------------------------------------------
/SetName_Window.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Diagnostics;
6 | using System.Drawing;
7 | using System.IO;
8 | using System.Linq;
9 | using System.Net.Http;
10 | using System.Net;
11 | using System.Runtime.InteropServices;
12 | using System.Security;
13 | using System.Text;
14 | using System.Threading.Tasks;
15 | using System.Windows.Forms;
16 | using Microsoft.Win32;
17 | using AntdUI;
18 |
19 | namespace PvzLauncher
20 | {
21 | public partial class SetName_Window: Form
22 | {
23 | //函数========================================================================================
24 | #region Functions
25 |
26 | //引用==================================================
27 | //发送系统消息
28 | [System.Runtime.InteropServices.DllImport("user32.dll")]
29 | private static extern bool DestroyIcon(IntPtr hIcon);
30 |
31 | //写PATH系统环境变量
32 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
33 | private static extern IntPtr SendMessageTimeout(
34 | IntPtr hWnd,
35 | uint Msg,
36 | UIntPtr wParam,
37 | string lParam,
38 | uint fuFlags,
39 | uint uTimeout,
40 | out UIntPtr lpdwResult);
41 |
42 | private const uint WM_SETTINGCHANGE = 0x001A;
43 | private const uint SMTO_ABORTIFHUNG = 0x0002;
44 |
45 | //创建快捷方式
46 | [ComImport]
47 | [Guid("00021401-0000-0000-C000-000000000046")]
48 | private class ShellLink { }
49 |
50 | [ComImport]
51 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
52 | [Guid("000214F9-0000-0000-C000-000000000046")]
53 | private interface IShellLinkW
54 | {
55 | void GetPath([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, int cchMaxPath, out IntPtr pfd, int fFlags);
56 | void GetIDList(out IntPtr ppidl);
57 | void SetIDList(IntPtr pidl);
58 | void GetDescription([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, int cchMaxName);
59 | void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName);
60 | void GetWorkingDirectory([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, int cchMaxPath);
61 | void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir);
62 | void GetArguments([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, int cchMaxArgs);
63 | void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs);
64 | void GetHotkey(out short pwHotkey);
65 | void SetHotkey(short wHotkey);
66 | void GetShowCmd(out int piShowCmd);
67 | void SetShowCmd(int iShowCmd);
68 | void GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath, int cchIconPath, out int piIcon);
69 | void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, int iIcon);
70 | void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, int dwReserved);
71 | void Resolve(IntPtr hwnd, int fFlags);
72 | void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile);
73 | }
74 |
75 | [ComImport]
76 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
77 | [Guid("0000010b-0000-0000-C000-000000000046")]
78 | private interface IPersistFile
79 | {
80 | void GetClassID(out Guid pClassID);
81 | [PreserveSig]
82 | int IsDirty();
83 | void Load([MarshalAs(UnmanagedType.LPWStr)] string pszFileName, int dwMode);
84 | void Save([MarshalAs(UnmanagedType.LPWStr)] string pszFileName, [MarshalAs(UnmanagedType.Bool)] bool fRemember);
85 | void SaveCompleted([MarshalAs(UnmanagedType.LPWStr)] string pszFileName);
86 | void GetCurFile([MarshalAs(UnmanagedType.LPWStr)] out string ppszFileName);
87 | }
88 | //引用==================================================
89 |
90 | //HTTP读取文件
91 | public static string HttpReadFile(string url)
92 | {
93 | try
94 | {
95 | // 设置安全协议类型(支持TLS 1.2/1.1/1.0)
96 | ServicePointManager.SecurityProtocol =
97 | SecurityProtocolType.Tls12 |
98 | SecurityProtocolType.Tls11 |
99 | SecurityProtocolType.Tls;
100 |
101 | // 创建带自定义验证的HttpClient
102 | using (var handler = new HttpClientHandler())
103 | using (var client = new HttpClient(handler))
104 | {
105 | // 忽略SSL证书验证
106 | handler.ServerCertificateCustomValidationCallback =
107 | (sender, cert, chain, sslPolicyErrors) => true;
108 |
109 | // 设置超时时间(10秒)
110 | client.Timeout = TimeSpan.FromSeconds(10);
111 |
112 | // 添加浏览器User-Agent
113 | client.DefaultRequestHeaders.UserAgent.ParseAdd(
114 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " +
115 | "(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
116 |
117 | // 发送GET请求
118 | var response = client.GetAsync(url).Result;
119 | response.EnsureSuccessStatusCode();
120 |
121 | // 读取字节内容
122 | var bytes = response.Content.ReadAsByteArrayAsync().Result;
123 |
124 | // 检测编码
125 | var encoding = HttpReadFile_DetectEncoding(response, bytes);
126 |
127 | // 转换为字符串
128 | return encoding.GetString(bytes);
129 | }
130 | }
131 | catch
132 | {
133 | return string.Empty;
134 | }
135 | }
136 |
137 | //HTTPS读文件(检测编码)
138 | private static Encoding HttpReadFile_DetectEncoding(HttpResponseMessage response, byte[] bytes)
139 | {
140 | try
141 | {
142 | // 从Content-Type头获取编码
143 | var contentType = response.Content.Headers.ContentType;
144 | if (contentType?.CharSet != null)
145 | {
146 | return Encoding.GetEncoding(contentType.CharSet);
147 | }
148 | }
149 | catch
150 | {
151 | // 忽略编码解析错误
152 | }
153 |
154 | // 尝试通过BOM检测编码
155 | if (bytes.Length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF)
156 | return Encoding.UTF8;
157 | if (bytes.Length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF)
158 | return Encoding.BigEndianUnicode;
159 | if (bytes.Length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE)
160 | return Encoding.Unicode;
161 |
162 | // 默认使用UTF-8
163 | return Encoding.UTF8;
164 | }
165 |
166 | //写日志
167 | public static void Log(string level, string message)
168 | {
169 | // 获取当前时间并格式化
170 | string timestamp = DateTime.Now.ToString("HH:mm:ss");
171 |
172 | // 构造完整日志条目
173 | string logContent = $"[{timestamp}][{level}]: {message}";
174 |
175 | // 拼接完整文件路径
176 | string logPath = Path.Combine(Application.StartupPath, "Log.log");
177 |
178 | // 使用追加模式写入文件
179 | using (StreamWriter sw = new StreamWriter(logPath, true))
180 | {
181 | sw.WriteLine(logContent);
182 | }
183 |
184 | }
185 |
186 | //文件写一行
187 | public static void FileAddLine(string content, string filePath)
188 | {
189 | using (StreamWriter sw = File.AppendText(filePath))
190 | {
191 | sw.WriteLine(content);
192 | }
193 | }
194 |
195 | //连通性测试
196 | public static object CheckUrlConnection(string url)
197 | {
198 | // 验证URL格式有效性
199 | try
200 | {
201 | var uri = new Uri(url);
202 | }
203 | catch (UriFormatException)
204 | {
205 | return "unconnect";
206 | }
207 |
208 | HttpWebRequest request = null;
209 | Stopwatch sw = new Stopwatch();
210 |
211 | try
212 | {
213 | request = (HttpWebRequest)WebRequest.Create(url);
214 | request.Timeout = 5000; // 设置5秒超时
215 | request.Method = "HEAD"; // 使用HEAD方法减少数据量
216 |
217 | sw.Start();
218 | using (var response = (HttpWebResponse)request.GetResponse())
219 | {
220 | sw.Stop();
221 | return sw.ElapsedMilliseconds;
222 | }
223 | }
224 | catch (WebException ex)
225 | {
226 | sw.Stop();
227 | /* 服务器响应但返回错误状态(如404)的情况
228 | 仍视为连接成功,返回延迟时间 */
229 | if (ex.Response != null)
230 | {
231 | return sw.ElapsedMilliseconds;
232 | }
233 | return "unconnect"; // 真正无法连接的情况
234 | }
235 | catch (Exception)
236 | {
237 | return "unconnect";
238 | }
239 | finally
240 | {
241 | request?.Abort(); // 确保释放网络资源
242 | }
243 | }
244 |
245 | //执行控制台命令
246 | public string ExecuteCommand(string command)
247 | {
248 | try
249 | {
250 | var processInfo = new ProcessStartInfo("cmd.exe", "/c " + command)
251 | {
252 | CreateNoWindow = false, // 不创建新窗口
253 | UseShellExecute = false, // 不使用系统外壳程序执行
254 | RedirectStandardError = true, // 重定向标准错误
255 | RedirectStandardOutput = true // 重定向标准输出
256 | };
257 |
258 | using (var process = new Process())
259 | {
260 | process.StartInfo = processInfo;
261 | process.Start();
262 |
263 | // 异步读取输出流和错误流
264 | string output = process.StandardOutput.ReadToEnd();
265 | string error = process.StandardError.ReadToEnd();
266 |
267 | process.WaitForExit(); // 等待程序执行完成
268 |
269 | // 组合输出结果
270 | string result = string.IsNullOrEmpty(output) ? "" : output;
271 | string errorResult = string.IsNullOrEmpty(error) ? "" : "\n[Error]\n" + error;
272 |
273 | return $"{result}{errorResult} (ExitCode: {process.ExitCode})";
274 | }
275 | }
276 | catch (Exception ex)
277 | {
278 | return $"执行命令时发生异常:{ex.Message}";
279 | }
280 | }
281 |
282 | //搜索文件内容
283 | public bool FileSearchText(string filePath, string searchText)
284 | {
285 | try
286 | {
287 | // 检查搜索文本是否有效
288 | if (string.IsNullOrEmpty(searchText))
289 | return false;
290 |
291 | // 读取文件全部内容
292 | string fileContent = File.ReadAllText(filePath);
293 |
294 | // 检查内容是否包含目标文本
295 | return fileContent.Contains(searchText);
296 | }
297 | catch (Exception ex) when (ex is FileNotFoundException ||
298 | ex is IOException ||
299 | ex is UnauthorizedAccessException)
300 | {
301 | // 处理常见文件异常:文件不存在、无法访问或IO错误
302 | return false;
303 | }
304 | }
305 |
306 | //弹出系统通知
307 | public static void ShowNotification(string title, string content)
308 | {
309 | NotifyIcon notifyIcon = new NotifyIcon();
310 |
311 | // 创建透明图标
312 | using (Bitmap bmp = new Bitmap(1, 1))
313 | {
314 | bmp.SetPixel(0, 0, Color.Transparent);
315 | IntPtr hIcon = bmp.GetHicon();
316 | try
317 | {
318 | notifyIcon.Icon = Icon.FromHandle(hIcon);
319 | }
320 | finally
321 | {
322 | DestroyIcon(hIcon);
323 | }
324 | }
325 |
326 | notifyIcon.Visible = true;
327 |
328 | // 设置通知关闭后的清理操作
329 | notifyIcon.BalloonTipClosed += (sender, e) =>
330 | {
331 | notifyIcon.Visible = false;
332 | notifyIcon.Dispose();
333 | };
334 |
335 | // 显示通知(3000ms=3秒显示时间)
336 | notifyIcon.ShowBalloonTip(3000, title, content, ToolTipIcon.None);
337 | }
338 |
339 | // 写入配置(常规)
340 | public static void Legacy_WriteConfig(string filePath, string key, string value)
341 | {
342 | Dictionary config = new Dictionary();
343 |
344 | // 如果文件存在,先读取现有配置
345 | if (File.Exists(filePath))
346 | {
347 | foreach (string line in File.ReadAllLines(filePath))
348 | {
349 | string[] parts = line.Split(new[] { '=' }, 2);
350 | if (parts.Length == 2 && !string.IsNullOrWhiteSpace(parts[0]))
351 | {
352 | config[parts[0].Trim()] = parts[1].Trim();
353 | }
354 | }
355 | }
356 |
357 | // 添加/更新键值
358 | config[key] = value;
359 |
360 | // 写入所有配置项
361 | File.WriteAllLines(filePath,
362 | config.Select(kvp => $"{kvp.Key}={kvp.Value}"),
363 | Encoding.UTF8);
364 | }
365 |
366 | // 读取配置(常规)
367 | public static string Legacy_ReadConfig(string filePath, string key)
368 | {
369 | if (!File.Exists(filePath)) return null;
370 |
371 | foreach (string line in File.ReadAllLines(filePath))
372 | {
373 | string[] parts = line.Split(new[] { '=' }, 2);
374 | if (parts.Length == 2 &&
375 | parts[0].Trim().Equals(key, StringComparison.OrdinalIgnoreCase))
376 | {
377 | return parts[1].Trim();
378 | }
379 | }
380 | return null;
381 | }
382 |
383 | //写注册表项
384 | //rootKey常用常量
385 | //Registry.CurrentUser (HKEY_CURRENT_USER)
386 | //Registry.LocalMachine (HKEY_LOCAL_MACHINE)
387 | //Registry.ClassesRoot (HKEY_CLASSES_ROOT)
388 |
389 | /*valueKind:支持的类型包括:
390 | String:字符串值
391 | DWord:32位整数
392 | QWord:64位整数
393 | Binary:二进制数据
394 | MultiString:字符串数组*/
395 | public static bool WriteRegistryValue(RegistryKey rootKey, string subKeyPath, string valueName, object value, RegistryValueKind valueKind)
396 | {
397 | try
398 | {
399 | if (rootKey == null)
400 | throw new ArgumentNullException(nameof(rootKey));
401 |
402 | if (string.IsNullOrEmpty(subKeyPath))
403 | throw new ArgumentException("子项路径不能为空", nameof(subKeyPath));
404 |
405 | using (RegistryKey subKey = rootKey.CreateSubKey(subKeyPath))
406 | {
407 | if (subKey == null) return false;
408 |
409 | subKey.SetValue(valueName, value, valueKind);
410 | return true;
411 | }
412 | }
413 | catch (UnauthorizedAccessException)
414 | {
415 | // 权限不足,可能需要以管理员身份运行
416 | throw;
417 | }
418 | catch (Exception ex)
419 | {
420 | // 记录异常或处理其他错误
421 | Console.WriteLine($"写入注册表失败: {ex.Message}");
422 | return false;
423 | }
424 | }
425 |
426 | //读注册表项
427 | public static object ReadRegistryValue(RegistryKey rootKey, string subKeyPath, string valueName, object defaultValue = null)
428 | {
429 | try
430 | {
431 | if (rootKey == null)
432 | throw new ArgumentNullException(nameof(rootKey));
433 |
434 | if (string.IsNullOrEmpty(subKeyPath))
435 | throw new ArgumentException("子项路径不能为空", nameof(subKeyPath));
436 |
437 | using (RegistryKey subKey = rootKey.OpenSubKey(subKeyPath, false))
438 | {
439 | // 子项不存在时返回默认值
440 | if (subKey == null) return defaultValue;
441 |
442 | // 获取值(值不存在时返回默认值)
443 | return subKey.GetValue(valueName, defaultValue);
444 | }
445 | }
446 | catch (UnauthorizedAccessException)
447 | {
448 | // 权限不足,可能需要管理员权限
449 | throw;
450 | }
451 | catch (Exception ex)
452 | {
453 | // 记录异常或处理其他错误
454 | Console.WriteLine($"读取注册表失败: {ex.Message}");
455 | return defaultValue;
456 | }
457 | }
458 |
459 | // 写入配置(支持节)
460 | public static void WriteConfig(string filePath, string section, string key, string value)
461 | {
462 | var sections = ParseConfigFile(filePath);
463 |
464 | // 创建或更新节
465 | if (!sections.ContainsKey(section))
466 | {
467 | sections[section] = new Dictionary(StringComparer.OrdinalIgnoreCase);
468 | }
469 |
470 | // 更新键值
471 | sections[section][key.Trim()] = value;
472 |
473 | // 生成配置文件内容
474 | var lines = new List();
475 |
476 | // 处理默认节(空节名)
477 | if (sections.TryGetValue("", out var defaultSection) && defaultSection.Count > 0)
478 | {
479 | lines.AddRange(defaultSection.Select(kvp => $"{kvp.Key}={kvp.Value}"));
480 | }
481 |
482 | // 处理带节名的配置(按字母顺序排序)
483 | foreach (var sec in sections.Keys
484 | .Where(s => !string.IsNullOrEmpty(s))
485 | .OrderBy(s => s, StringComparer.OrdinalIgnoreCase))
486 | {
487 | // 添加节分隔空行
488 | if (lines.Count > 0) lines.Add("");
489 |
490 | lines.Add($"[{sec}]");
491 | lines.AddRange(sections[sec].Select(kvp => $"{kvp.Key}={kvp.Value}"));
492 | }
493 |
494 | File.WriteAllLines(filePath, lines, Encoding.UTF8);
495 | }
496 |
497 | // 读取配置(支持节)
498 | public static string ReadConfig(string filePath, string section, string key)
499 | {
500 | if (!File.Exists(filePath)) return null;
501 |
502 | var sections = ParseConfigFile(filePath);
503 |
504 | if (sections.TryGetValue(section, out var sectionData) &&
505 | sectionData.TryGetValue(key, out var value))
506 | {
507 | return value;
508 | }
509 | return null;
510 | }
511 |
512 | // 解析配置文件为节字典(读写配置)
513 | private static Dictionary> ParseConfigFile(string filePath)
514 | {
515 | var sections = new Dictionary>(StringComparer.OrdinalIgnoreCase);
516 | string currentSection = "";
517 |
518 | if (File.Exists(filePath))
519 | {
520 | foreach (var line in File.ReadAllLines(filePath))
521 | {
522 | var trimmed = line.Trim();
523 |
524 | // 处理节头
525 | if (trimmed.StartsWith("[") && trimmed.EndsWith("]"))
526 | {
527 | currentSection = trimmed.Substring(1, trimmed.Length - 2).Trim();
528 | if (!sections.ContainsKey(currentSection))
529 | {
530 | sections[currentSection] = new Dictionary(StringComparer.OrdinalIgnoreCase);
531 | }
532 | continue;
533 | }
534 |
535 | // 处理键值对
536 | var parts = line.Split(new[] { '=' }, 2);
537 | if (parts.Length == 2 && !string.IsNullOrWhiteSpace(parts[0]))
538 | {
539 | var k = parts[0].Trim();
540 | var v = parts[1].Trim();
541 |
542 | if (!sections.ContainsKey(currentSection))
543 | {
544 | sections[currentSection] = new Dictionary(StringComparer.OrdinalIgnoreCase);
545 | }
546 |
547 | sections[currentSection][k] = v;
548 | }
549 | }
550 | }
551 | return sections;
552 | }
553 |
554 | //删除配置
555 | public static void DeleteConfig(string filePath, string section, string key)
556 | {
557 | if (string.IsNullOrWhiteSpace(key))
558 | throw new ArgumentException("Key cannot be empty", nameof(key));
559 |
560 | var sections = ParseConfigFile(filePath);
561 | section = section ?? "";
562 |
563 | if (sections.TryGetValue(section, out var sectionData) && sectionData.Remove(key))
564 | {
565 | // 如果节已空则移除整个节
566 | if (sectionData.Count == 0)
567 | {
568 | sections.Remove(section);
569 | }
570 |
571 | SaveSectionsToFile(filePath, sections);
572 |
573 | }
574 | }
575 |
576 | // 统一保存配置的方法
577 | private static void SaveSectionsToFile(string filePath, Dictionary> sections)
578 | {
579 | var lines = new List();
580 |
581 | // 处理默认节
582 | if (sections.TryGetValue("", out var defaultSection) && defaultSection.Count > 0)
583 | {
584 | lines.AddRange(defaultSection.Select(kvp => $"{kvp.Key}={kvp.Value}"));
585 | }
586 |
587 | // 处理带节名的配置(按字母排序)
588 | foreach (var sec in sections.Keys
589 | .Where(s => !string.IsNullOrEmpty(s))
590 | .OrderBy(s => s, StringComparer.OrdinalIgnoreCase))
591 | {
592 | var sectionData = sections[sec];
593 | if (sectionData.Count == 0) continue;
594 |
595 | if (lines.Count > 0) lines.Add("");
596 | lines.Add($"[{sec}]");
597 | lines.AddRange(sectionData.Select(kvp => $"{kvp.Key}={kvp.Value}"));
598 | }
599 |
600 | File.WriteAllLines(filePath, lines, Encoding.UTF8);
601 | }
602 |
603 | //删除配置节
604 | public static void DeleteSection(string filePath, string section)
605 | {
606 | var sections = ParseConfigFile(filePath);
607 | section = section ?? "";
608 |
609 | if (sections.Remove(section))
610 | {
611 | SaveSectionsToFile(filePath, sections);
612 | }
613 | }
614 |
615 | //写PATH系统环境变量
616 | public static void AddPath(string directoryPath, bool systemLevel = true)
617 | {
618 | if (string.IsNullOrWhiteSpace(directoryPath))
619 | throw new ArgumentException("目录路径不能为空");
620 |
621 | RegistryKey registryKey = systemLevel ?
622 | Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true) :
623 | Registry.CurrentUser.OpenSubKey(@"Environment", true);
624 |
625 | if (registryKey == null)
626 | throw new NullReferenceException("注册表项未找到");
627 |
628 | try
629 | {
630 | string currentPath = registryKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames).ToString();
631 | string[] paths = currentPath.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
632 |
633 | // 检查是否已存在(不区分大小写)
634 | if (paths.Any(p => p.Trim().Equals(directoryPath.Trim(), StringComparison.OrdinalIgnoreCase)))
635 | return;
636 |
637 | // 追加新路径
638 | string newPath = currentPath.TrimEnd(';') + ";" + directoryPath.Trim();
639 |
640 | // 更新注册表
641 | registryKey.SetValue("PATH", newPath, RegistryValueKind.ExpandString);
642 |
643 | // 广播环境变量变更通知
644 | SendMessageTimeout(
645 | new IntPtr(0xFFFF), // HWND_BROADCAST
646 | WM_SETTINGCHANGE,
647 | UIntPtr.Zero,
648 | "Environment",
649 | SMTO_ABORTIFHUNG,
650 | 5000,
651 | out UIntPtr _);
652 | }
653 | finally
654 | {
655 | registryKey.Close();
656 | }
657 | }
658 |
659 | //创建快捷方式
660 | public static bool CreateShortcut(string targetPath, string shortcutPath)
661 | {
662 | if (!File.Exists(targetPath)) return false;
663 |
664 | try
665 | {
666 | Directory.CreateDirectory(Path.GetDirectoryName(shortcutPath));
667 |
668 | var shellLink = (IShellLinkW)new ShellLink();
669 | shellLink.SetPath(targetPath);
670 | shellLink.SetWorkingDirectory(Path.GetDirectoryName(targetPath));
671 | shellLink.SetIconLocation(targetPath, 0); // 使用目标文件自身图标
672 |
673 | var persistFile = (IPersistFile)shellLink;
674 | persistFile.Save(shortcutPath, false);
675 | return true;
676 | }
677 | catch
678 | {
679 | return false;
680 | }
681 | }
682 |
683 | //程序自启动
684 | public static bool SetAutoStart(bool enable, string exePath = null, RegistryKey registryRoot = null, string keyName = null)
685 | {
686 | try
687 | {
688 | // 设置默认值
689 | exePath = exePath ?? Application.ExecutablePath;
690 | registryRoot = registryRoot ?? Registry.CurrentUser;
691 | keyName = keyName ?? Application.ProductName;
692 |
693 | // 获取注册表Run子项
694 | using (var runKey = registryRoot.OpenSubKey(
695 | @"Software\Microsoft\Windows\CurrentVersion\Run",
696 | true)) // 需要写权限
697 | {
698 | if (runKey == null)
699 | {
700 | throw new Exception("无法打开注册表Run项");
701 | }
702 |
703 | if (enable)
704 | {
705 | // 设置自启动
706 | runKey.SetValue(keyName, exePath);
707 | }
708 | else
709 | {
710 | // 移除自启动
711 | runKey.DeleteValue(keyName, throwOnMissingValue: false);
712 | }
713 | }
714 | return true;
715 | }
716 | catch (SecurityException ex)
717 | {
718 | MessageBox.Show($"需要管理员权限才能修改系统级自启动设置\n{ex.Message}");
719 | return false;
720 | }
721 | catch (UnauthorizedAccessException ex)
722 | {
723 | MessageBox.Show($"访问被拒绝,请以管理员身份运行\n{ex.Message}");
724 | return false;
725 | }
726 | catch (Exception ex)
727 | {
728 | MessageBox.Show($"操作失败: {ex.Message}");
729 | return false;
730 | }
731 | }
732 |
733 | ///
734 | /// 检查当前自启动状态
735 | ///
736 | public static bool IsAutoStartEnabled(RegistryKey registryRoot = null,
737 | string keyName = null)
738 | {
739 | try
740 | {
741 | registryRoot = registryRoot ?? Registry.CurrentUser;
742 | keyName = keyName ?? Application.ProductName;
743 |
744 | using (var runKey = registryRoot.OpenSubKey(
745 | @"Software\Microsoft\Windows\CurrentVersion\Run"))
746 | {
747 | var value = runKey?.GetValue(keyName);
748 | return value != null && value.ToString().Equals(
749 | Application.ExecutablePath,
750 | StringComparison.OrdinalIgnoreCase);
751 | }
752 | }
753 | catch
754 | {
755 | return false;
756 | }
757 | }
758 | #endregion
759 |
760 | //事件========================================================================================
761 | public SetName_Window()
762 | {
763 | InitializeComponent();
764 | }
765 |
766 | private void textBox_Name_TextChanged(object sender, EventArgs e)
767 | {
768 | if (textBox_Name.Text.Length > 0 && textBox_Name.Text != $"{Main_Window.SGamesPath}")
769 | {
770 | button_Done.Enabled = true;
771 | }
772 | else
773 | {
774 | button_Done.Enabled = false;
775 | }
776 | }
777 |
778 | private void button_Done_Click(object sender, EventArgs e)
779 | {
780 | try
781 | {
782 | Directory.Move($"{Main_Window.RunPath}\\games\\{Main_Window.SGamesPath}", $"{Main_Window.RunPath}\\games\\{textBox_Name.Text}");
783 |
784 |
785 | WriteConfig(Main_Window.ConfigPath, textBox_Name.Text, "ExecuteName", ReadConfig(Main_Window.ConfigPath, Main_Window.SGamesPath, "ExecuteName"));
786 | WriteConfig(Main_Window.ConfigPath, textBox_Name.Text, "PlayTime", ReadConfig(Main_Window.ConfigPath, Main_Window.SGamesPath, "PlayTime"));
787 | if (ReadConfig(Main_Window.ConfigPath, Main_Window.SGamesPath, "FirstLaunch") != null)
788 | {
789 | WriteConfig(Main_Window.ConfigPath, textBox_Name.Text, "FirstLaunch", ReadConfig(Main_Window.ConfigPath, Main_Window.SGamesPath, "FirstLaunch"));
790 | }
791 |
792 |
793 | DeleteSection(Main_Window.ConfigPath, Main_Window.SGamesPath);
794 |
795 | Main_Window.SGamesPath = textBox_Name.Text;
796 |
797 | SetGame_Window.DialogState = true;
798 |
799 | this.Close();
800 | }
801 | catch (Exception ex)
802 | {
803 | AntdUI.Notification.open(new AntdUI.Notification.Config(this, "", "", AntdUI.TType.None, AntdUI.TAlignFrom.TR)
804 | {
805 | Title = "发生错误!",
806 | Text = $"在更改名称时发生错误!\n错误原因:{ex.Message}",
807 | Icon = AntdUI.TType.Error
808 | });
809 |
810 | }
811 |
812 | }
813 |
814 | private void SetName_Window_Load(object sender, EventArgs e)
815 | {
816 | textBox_Name.Text = Main_Window.SGamesPath;
817 | }
818 |
819 | private void button_Cancel_Click(object sender, EventArgs e)
820 | {
821 | this.Close();
822 | }
823 | }
824 | }
825 |
--------------------------------------------------------------------------------