v2rayN-HY2 新增 添加Hy2服务器 窗口 在 .net 4.8 工程中复制已有的窗口

Hy2服务端的一键脚本已经有了(v2ray v4 json 和 Hy2 都有了), 但是我用惯了的 v2rayN-3.29 并不支持, 于是就动手添加一下.

首先当然是要新增一个 添加Hy2服务器 的窗口.

从github下载源文件
下载crazypeace/v2rayN-3.29-VLESS源码

解压 .zip 文件

用 Visual Studio 打开 .sln 工程文件.

我看了一圈, 目前已有的 添加Shadowsocks服务器 的窗口 里的信息比较适合 Hy2服务器, 我准备复制一个窗口出来, 省得自己在窗口上加组件, 也省得写一些重复性的代码.

找到 AddShadowSocksServerForm.cs, 右键, 复制
右键复制AddShadowSocksServerForm.cs

我准备复制为 同级的窗口.
所以找到父目录, 也就是Forms, 右键, 粘贴 
在Forms文件夹上右键粘贴

可以看到复制出来的一份窗口了.
看到复制出来的一份窗口

在 .cs 文件上, 右键, 重命名
修改文件名为 AddHy2ServerForm.cs
重命名为AddHy2ServerForm.cs

你可以看到, 窗口相关的文件名也同步修改了. 
相关文件名同步改好,但内容还没改

但, 这个时候, 这些文件内容并没有改变. 主要是, 一些变量名还没有修改 
(我觉得VS这一点还需要加强. 本身.net有一些框架. 像这样的重命名应该将框架相关的变量都同步重命名. 这应该算是一个"重构"功能.)

我们在 新窗口的文件内容中搜索旧窗口的名称. 也就是在 AddHy2ServerForm.cs 相关的文件中搜索 "AddShadowSocksServerForm" 文字.

.cs 文件右键, 查看代码
对几个文件都用右键查看代码打开

相关的 .Designer.cs, .resx, .zh-Hans.resx 文件都一样右键, 查看代码.

菜单中找到 在文件中查找 功能 (也可以用快捷键 Ctrl+Shift+F)
菜单里用在文件中查找 Ctrl+Shift+F

填写搜索关键字
不要 勾全字匹配
查找范围选择 所有打开的文档
点击 查找全部
搜旧类名,范围选所有打开的文档

检视找到的内容, 将需要的部分修改为 AddHy2ServerForm
不出意外的话, 应该全部找到的部分都要替换.
那为什么一开始不使用 在文件中替换 功能呢? 我还是想在修改之前先确认一下啦~

编译, 启动一下.
正常编译通过, 正常启动.

项目中有了这个窗口, 但还没有功能入口来显示这个窗口.
接下来, 我们在添加一个菜单项, 来显示这个窗口.
在 MainForm.cs 查看设计器
在MainForm设计器里加菜单项显示新窗口

点击菜单项, 逐组展开, 在期望的空白处, 点击
菜单项文本填Add [Hy2] Server

输入想添加的菜单项文本 Add [Hy2] Server
Servers菜单里出现Add [Hy2] server

双击新添加的菜单项, 可以添加这个菜单项的点击事件.
双击菜单项生成点击事件方法

要添加的内容可以参考其它菜单项, 比如 添加 Shadowsocks 服务器的菜单项.

这之后的分析过程和代码没有通用性. 我就详细不写具体过程了. 整体来说就是照猫画虎, 参考已有的代码流程, 在必要的地方添加新的属性Hy2啊, 分支代码逻辑啊, ...
代码量很少, 不过分布在不同的文件中. 
需要说明的是, 这是 v2rayN 项目的特殊性. 如果你是在一个普遍的 .net 4.8 项目中, 也许只要在菜单项的点击事件中, 简单的写一两句就够了.

测试一下, 发现显示的窗口标题还是Shadowsocks
动图演示:弹出的新窗口标题还是Shadowsocks

编辑窗口属性的操作是很基本的知识, 很容易在 Google 和 GPT 中获取, 我就不详细写了.

这里需要注意的是, v2rayN 是一个多语言项目. 
还需要编辑 .zh-Hans.resx 中相应的文本.
改.zh-Hans.resx里的多语言文本

到此为止, 我们仅仅是添加了一个 添加Hy2服务器的新窗口. 

要实现完整的Hy2功能支持, 还需要其它处理, 我们下回分解.

========
开了一个分支, 本文的修改内容已提交.
如果你有兴趣, 可以看到整个的开发过程.

本次修改记录
评论