Windows如何检测网络状态,并自动打开某软件?

校园网是NetKeeper认证,已经使用路由器拦截PPPOE拨号破解了多设备限制。但是不知道为什呢会出现不定时断网,已经确认不是心跳所致。
所以就想Windows有没有办法可以检测到网络断开之后,自动打开校园网客户端自动登录?
(客户端本身就有打开自动登录的功能,所以需要解决的问题只有检测断网-打开软件这一步。

比如 固定的ping 某个地址. 不通就自动打开客户端.

要是编程的话, 可以直接获取网络连接状态, 参见 INetworkListManager::GetConnectivity (netlistmgr.h) - Win32 apps | Microsoft Learn

1 个赞

哈哈,编程属于未知领域了:joy:

懂点bat吗?写个bat,定时任务跑一下。
ping的IP最好是稳定在线的,比如上级网关之类的,因为只ping一次,ping不通就会打开客户端。
如果不想看到命令行窗口,下个nircmd,定时任务跑nircmd exec hide a.bat


a.bat

@echo off
ping 某个IP -n 1 > nul
if errorlevel 1 (start "" "客户端exe")
1 个赞

好的谢谢,回去试一下:hugs:

不考虑试试用路由多拨吗

多拨不是提高网速的吗?需要有多个账号吧?

哦,看错。还以为你已经路由破解了pppoe的多拨。

多拨,看情况,每个学校情况不一样。有些学校能同一个账号多拨。

你为什么不用路由拨号试试

没法直接用路由器拨号,客户端会对账号进行一次加密。
所以目前是路由器拦截加密后的账号再拨号。

你好,我简单修改了下可以实现我的需求。
但是遇到了新的问题。

@echo off
ping baidu.com -n 1 > nul
if errorlevel 1 (start "" "C:\Users\Kawa\Documents\Program Files\noUAC.NetKeeper.lnk")
timeout /t 10 /nobreak
taskkill /im "NK.exe"

仅仅是重复执行bat文件会出现命令窗口,按照你说的nircmd确实是不会出现命令窗口,但是我找不到如何自动重复执行nircmd exec hide a.bat的方法,请问您有什么好的建议吗?
用bat实现重复运行nircmd命令,成功实现闭环XD :joy:

系统自带的 计划任务 .

1 个赞

计划任务程序可自定义太低,不过已经解决了,使用的是AutoHotkey的SetTimer

问题已解决。
使用AutoHotkey的SetTimer,开机自启,定时运行NirCmd快捷方式。
NirCmd快捷方式添加了启动参数,用于隐藏Bat文件的窗口。
AutoHotkey启动NirCmd,再运行Bat文件:joy:
然后Bat对114DNSping,无网络则运行拨号客户端,然后再ping一次,ping通后结束拨号客户端进程。

非常感谢您的思路:pray:

xiaokonglong 说的,系统自带的 计划任务。
或者,改一下那个bat,直接在bat里循环,也不用nircmd了,就最小化放在那里好了,关起来也方便。

@echo off
:LOOP
ping baidu.com -n 1 > nul
if errorlevel 1 (start "" "C:\Users\Kawa\Documents\Program Files\noUAC.NetKeeper.lnk")
timeout /t 10 /nobreak
taskkill /im "NK.exe"

timeout /t 60 /nobreak
goto :LOOP
1 个赞

会用autohotkey run? 那应该可以不用nircmd了,run直接有参数hide,研究一下 :wink:

常威,你还说你不会武功? :laughing:

1 个赞

都是有什么需求就查看文档,或者是把别人的拿来改改:joy:过段时间就忘。
复杂的需求也就不会弄了