经常需要关闭有线适配器连接无线,每次打开设置界面也有些繁琐
主要原理是用CMD命令行,刚好配合ahk菜单一键切换
其实CMD命令可以用ahk实现但我试了几个方法都不行,如果大佬们会写可以评论贴代码
NetAdapterSwitch.ahk
if (!A_IsAdmin)
Run *RunAs %A_ScriptFullPath%
FileEncoding UTF-8-RAW
Menu Tray,NoStandard
Menu Tray,Add,WLAN
Menu Tray,Add,Ethernet
Menu Tray,Add,Exit
return
WLAN:
Run bat\WLAN.bat,,Hide
return
Ethernet:
Run bat\Ethernet.bat,,Hide
return
Exit:
ExitApp
#NoEnv
#Persistent
#SingleInstance Force
WLAN.bat
set NetName=WLAN
netsh interface show interface "%NetName%" | findstr "Disabled" >nul 2>nul && (set State=enabled) || (set State=disabled)
netsh interface set interface "%NetName%" %State%
Ethernet.bat
set NetName=Ethernet
netsh interface show interface "%NetName%" | findstr "Disabled" >nul 2>nul && (set State=enabled) || (set State=disabled)
netsh interface set interface "%NetName%" %State%
看“以太网”的状态,是要这个效果?
是的,不过文中的三句CMD能实现检测是否开启而切换
就是能用一个开关实现开启和关闭?
获取状态的话。。。需要读一个返回值。。目前来说。。。 文档里有例子可以返回结果,但是那个例子里我不会把CMD窗口隐藏运行?
VarSetCapacity(lpdwFlags,1) ret := DllCall(“WININET.dllInternetGetConnectedState”, “Ptr”, &lpdwFlags, “UInt”, 0) MsgBox % ret 【不管啥方式。。只要适配器连接了。就返回1,否则返回0。。如果你只是控制一个有线的适配器的启用/禁用,可以试试】 原因不明。。我这个连接的按钮状态总不变。。看鼠标位置连接状态的提示吧 下面是代码,自己测试 F2:: VarSetCapacity(lpdwFlags,1) ret := DllCall(“WININET.dllInternetGetConnectedState”, “Ptr”, &lpdwFlags, “UInt”, 0) If (ret = 1) Run, %ComSpec% /c netsh interface set interface “WLAN 2” disabled, ,Hide Else Run, %ComSpec% /c netsh interface set interface “WLAN 2” enabled, ,Hide Return
大佬牛逼!
还不够简洁,如果把cmd整合进ahk脚本就更好,但就佩服这种一本正经的分享劲!加油!
僵尸大佬在评论区分享了,集思广益?