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

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

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

从github下载源文件

解压 .zip 文件

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

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

找到 AddShadowSocksServerForm.cs, 右键, 复制

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

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

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

你可以看到, 窗口相关的文件名也同步修改了. 

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

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

.cs 文件右键, 查看代码

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

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

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

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

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

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

点击菜单项, 逐组展开, 在期望的空白处, 点击

输入想添加的菜单项文本 Add [Hy2] Server

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

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

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

测试一下, 发现显示的窗口标题还是Shadowsocks

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

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

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

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

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

本次修改记录

评论

The Hot3 in Last 30 Days

RackNerd VPS搭Hysteria2 HY2梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存

强行重装 233boy的sing-box脚本 取消脚本报错退出的逻辑