Windows 小工具之 Wifi 固定器

Windows 小工具之 Wifi 固定器

独立观察员 2022 年 9 月 10 日

4651f8952f4f934d505b923b62507217.png

一、信息

开发框架:WPF

运行环境:net6.0-windows10.0.22000.0

主要依赖:ManagedNativeWifi(2.3.0)、TaskScheduler(2.10.1)

软件作者:独立观察员(dlgcy.com)

推荐系统:Windows11

下载地址:https://gitee.com/dlgcy/DLGCY_FixedWifi/releases

开源地址:https://gitee.com/dlgcy/DLGCY_FixedWifi

二、前言

不知道大家在 Windows 上连接使用 Wifi 时有没有以下烦恼:进入系统后,不会自动连接想要的 Wifi;或者因为种种原因,本来连接了某个 Wifi,突然就断开了,或者连上了另一个 Wifi;等等类似情况。

如果我们在工作或生活时一定要连接指定 Wifi,那么产生这种种意外情况就很耽误事儿了。

有人就说了,Windows 有自动连接指定 Wifi 的功能呀,我想你说的是下面这个开关吧:

bb85135259dc162f44484c79f11becd3.png

这个开关,怎么说呢,还是有点作用的,但是不多。它有它自己的想法,比如你明明勾上了,但是它最终就是没有自动连接,原因可能是:你连接了有线网络、此 Wifi 信号不好、此 Wifi 没有外网、等等。

总之,本人开发此软件,就是为了解决需要固定连接指定 Wifi 的痛点,所以取名 “Wifi 固定器”。而且,自认为,比系统自带的这个 “自动连接” 开关更靠谱。

三、软件使用介绍

3.1 下载运行

从 https://gitee.com/dlgcy/DLGCY_FixedWifi/releases 页面下载最新的发行版,目前打包为单文件:

b50c7fe3a8ec64290280646b66a13408.png

如果下载下来发现运行不了,可能是缺少运行环境,从页面上列出的运行环境下载地址中下载安装 .NET 运行环境:

5e67d41025329614ea92603ab22d5398.png

第一次打开会自动创建配置文件,第一次打开会提示需要先选择固定一个 Wifi:

2abb976f0f4d928fd6abe722c106640a.png

3.2 查看 Wifi 信息

可以使用 “刷新” 按钮刷新 Wifi 列表,然后在列表中选择某个 Wifi,下方的 选中项详情 和 选中项 Profile 就会自动变化,展示出当前选择的 Wifi 的详细信息:

8d4831597f2e3f71a11da06974d73f64.png

特别说一下这个 Profile,它代表了 Wifi 的连接信息,所以,如果你没有连接过那个 Wifi,那么就没有 Profile,比如这个 “麻薯君”:

3ac32cfdb8b828c5c65123502db5a36a.png

对于没有 Profile 的 Wifi,本软件是不支持的。本软件的功能,依赖于你在系统中正确连接过你要固定的 Wifi,也就是系统生成过该 Wifi 的正确 Profile 才行。

3.3 选择固定 Wifi

选择好需要固定的 Wifi 之后,点击 “固定 Wifi” 按钮,信息区中提示固定成功,并自动展开配置区,提示进行保存配置,以便在下次开启软件时仍记住固定的是哪个 Wifi:

1b09c9f548b53e5f05d4dc32f96fa7d7.png

强烈建议保存配置,当然,如果只是临时使用,不保存也可以。

f046854b3d51079b99061d8272b3f959.png

3.4 开启监控

固定好 Wifi 后点击 “开启监控” 即可(这里将检测时间间隔设置为 10 秒):

d7e1e94bffce9cd44dcef08f2d77efa0.png

可以看到,开启监控后,本软件将指定的 Wifi【DLGCY】连上了,然后中途我手动断开该 Wifi,本软件又将其连上了,满足需求。可以使用动图展示一下(动图):

f0d3111f0cf6465cb6e637b18a3cbec5.gif

点击 “停止监控” 就停止了功能。

3.5 开机自启

ad1fc1d8bdca982786c27156a624300c.png

先来说第一项 “是否自动开启监控?”,勾上的话,打开本软件的时候,如果配置合适(已固定了可用的 Wifi),那么就会自动开启监控,不用等使用者去手动点击 “开启监控”。如果要开启第三项开机自启,应该把这个也勾上,不然开机自启就没什么意义了。

然后是第三项 “是否在登陆前启动?”,这个其实是对第二项 “是否跟随系统启动?” 勾上时的配置,但是要在后者勾上前进行操作,后者勾上了,此项就禁用了。为什么会有此一项呢?因为本软件实现了两种开机自启的时机,一个是在电脑启动好了,但是还没有任何用户登陆时启动,也可以理解为在输入密码前就启动;那么第二种自然就是在用户输入密码进入桌面后才启动。

最后是第二项 “是否跟随系统启动?”,这个顾名思义,就是是否开机自启。本软件使用的是任务计划方案来实现开机自启,需要管理员权限。

比如我现在勾上登陆前启动,然后勾上开机自启,提示成功:

8966458c93e7e65d2f244226b12e4731.png

然后我们就可以在任务计划(此电脑 --> 右键 --> 管理 --> 任务计划程序)列表中看到新增了一项 “DLGCY_WifiFixator_v1.0.0_Startup” 任务计划(本程序中设置了任务计划名称为 {exe 程序名}_Startup):

ae81fc76c6f97ac3b4a149bd7e4c8056.png

注意看上图中的 安全选项 区域,用户账户为 SYSTEM,勾上了 “不管用户是否登陆都要运行”,这些就代表了,此项任务将在系统启动后就运行,即使用户还没有登陆。

我们再取消勾选开机自启,提示关闭成功:

37c55e8029420884e08325f134a01f34.png

此时刷新一下任务计划列表,发现刚才添加的那项也被移除了:

fc0a64f865c0d7c3cfd3ab349aa64077.png

我们现在取消勾选 “是否在登陆前启动?”,也就是打算让它在登陆后再启动,此项修改会自动保存所有配置:

46dbe989eccab880b3995869621247ee.png

然后我们再勾上开机自启:

3c2fe5c325a06df6cf67cb32402a75bf.png

此时再来看任务计划程序库,我们的任务又回来了,只不过这次用户账户变成了 “dlgcy”(当前登陆的用户),勾选项也变成了 “只在用户登陆时运行”:

500d85f2ce9183879cd9858d11b5f5ea.png

可以看看其它选项卡中的内容(动图):

8e8c291ef3fb253b6e60f11b7477644c.gif

实际上你也可以自己编辑,只需要点击右边的 “属性” 即可打开编辑窗口:

69bc85f2e6e0ad4f8c4941ddb88eeeda.png

那么这两种启动方式有什么区别呢?

1、登陆前启动:比如有这样一个使用场景,该电脑可以通电自启,但是你需要它连上某个 Wifi 你才能远程使用,这样就必须要让本软件在登陆前就启动了。不过这个启动方式,上面也看到了,使用的是 SYSTEM 账号,实际上是当作系统服务来的,所以由于系统限制,你将看不到也调不出本软件的 UI 界面,只能在任务管理器中看到它默默运行的身影,所以要求先配置正确。

2、登陆后启动:这个就没什么好说的了,其实没有太大必要,用的时候打开就行,不过如果每次都要用的话,开机自启会方便点。当然,这个模式下,UI 界面是正常显示的。

3.6 日志记录

在信息区设置中有一个 “是否同时记录到日志?” 配置项,默认是关闭的,我刚才演示上一节内容时打开了:

74795404eafc08ddd6ddceda6371ac73.png

这样就会记录运行信息到日志文件中了,比如那种登陆前启动的情况下,看不到界面,有个日志也算一种弥补吧:

1fac1a430f4c4fbbf4906e225a07538e.png

四、后记

本来还想写一节 “代码浅析” 的,谁曾想,写到这里,一个下午就过去了,所以说原创不易呀,大家多多支持哟。“代码浅析” 以后再写吧,当然也可能不写了,哈哈,大家可以在第一节的开源地址中自行查看。

不过可以推几篇我的相关文章,哈哈哈:

1、写此软件时遇到一个定时器延迟的问题,后来网友 @谣言似山 帮我解决了,见文章《【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?- 独立观察员 (dlgcy.com)》。(不过刚才演示断线重连时发现好像还有点问题,之后看看。)

2、上一节 日志记录,使用的是本人创建的 “简易日志” NuGet 包:

add46c80b43877785982f1af73750071.png

见文章《『简易日志』NuGet 日志包 SimpleLogger - 独立观察员 (dlgcy.com)》

3、本软件使用的弹窗见文章《WPF MVVM 模式下的弹窗 - 独立观察员 (dlgcy.com)》

4、本软件构建于我的项目 WPFTemplate:WPFTemplate: 自用 WPF 模板项目 (gitee.com)(https://gitee.com/dlgcy/WPFTemplate)

好了,其它的大家自己去发现吧。今天是中秋节,祝大家中秋快乐,阖家幸福!

作品

利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具

使用 WPF 版简易 SIP 服务器向 GB28181 摄像头发送直播请求

下载中转加速器 VPSDownloader.NET(.NET Core 程序部署到 Linux 系统) 

『简易日志』NuGet 日志包 SimpleLogger

PDF 目录编辑器使用介绍

Windows

Windows 11 及其安卓子系统折腾记

IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限

Windows 端最稳定的 DLNA音乐播放器推荐

Windows可登陆的本地账户忘记密码的解决方法

C#

【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三倍?

C#10 新特性 [调用方参数表达式] 解决了我七年前的困惑

【分享】C# 字节帮助类 ByteHelper

C# 在自定义的控制台输出重定向类中整合调用方信息

C# 枚举转列表

WPF

WPF 用户控件分享之边上带输入框的圆圈

分享一个 WPF 气泡弹框

WPF 表单验证之 INotifyDataErrorlnfo 接口的使用示例

[翻译] WPF 中用户控件 DataContext/Binding 和依赖属性的问题

OxyPlot 导出图片及 WPF 元素导出为图片的方法

让 WPF 的 RadioButton 支持再次点击取消选中的功能

WPF DataGrid 如何将被选中行带到视野中

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

WPF DataGrid 通过自定义表头模拟首行固定

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF

WPF 使用 Expression Design 画图导出及使用 Path 画图

WPF MVVM 弹框之等待框

解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)

WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面

真・WPF 按钮拖动和调整大小

WPF MVVM 模式下的弹窗

WPF 让一组 Button 实现 RadioButton 的当前样式效果

WPF 原生绑定和命令功能使用指南

WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘

在WPF的MVVM模式中使用OCX组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值