之前我通过ahk图像搜索功能实现了wifi点击连接,今天发现已经有大佬写了自动重连的脚本,大家可以移步学习一下。https://www.autoahk.com/archives/43980
我这里借鉴了大佬的思路和代码,首先连接我的wifi,然后再使用Rufaydium库驱动chrome打开新的实例,并判断是否已经登录成功,如果登录成功就提示。如果没有登录,那就填写账号和密码。我把我用到的实例分享出来,大家使用的时候需要根据自己的情况进行修改。
; ============自动上网第二代===========
^!i:: ;ctrl+alt +i
;调用函数
is_con := wifi_is_connect("netsh wlan show interface | findstr ""`\<SSID""")
;MsgBox, "wifi name is" %is_con% ;展示一下wifi名称
;通过字符串中是否有来判断
if !InStr(is_con,"U_WiFi") ;可修改成完整的wifi名称
{
;联网
Run, %ComSpec% /C netsh wlan connect name=U_WiFi ;wifi名称
sleep 1000 ;等待一秒钟
;-----浏览器操作-----
Chrome := new Rufaydium("chromedriver.exe")
Page1 := Chrome.NewSession() ;打开新的标签页
Page1.Navigate("http://login.c") ;给网页网址
Page1.CDP.WaitFOrLoad()
Element := Page1.getElementsbyClassName("edit_lobo_cell")
;这个判断条件大家根据自己的实际情况写,我的情况是,登录以后edit_lobo_cell元素就有2个,没有登录就是4个
; MsgBox, % Element.Count() ;这样就能获得输入的个数了,可以判断是否登录了
p=% Element.Count()
If (p=2)
{
MsgBox,已经登录
}
Else
{
Element[2].SendKey("201`n") ;自己的账号和密码,最后的`n标识回车
Element[3].SendKey("24`n")
;这里如果有必要的话可以再调用click()函数点击登录按钮
}
Sleep, 500
Chrome.QuitAllSessions() ; closing all session one by one
Chrome.driver.exit() ; exitting driver
}
return
;检测是否连着wifi
wifi_is_connect(command) ;这里输入的是命令,具体啥意思不用管,哈哈"netsh wlan show interface | findstr ""`\<SSID"""
{
cmdInfo:=""
try
{
Clip_Saved := ClipboardAll ;保存剪切板
Clipboard := "" ;清空剪切板
;这里是把命令组合起来运行,暂时不管那么多
Run,% ComSpec " /C " command " | CLIP", , Hide ;这个是干啥的呢?这个应该和wifi是否连接有关系了
ClipWait,2 ;等待什么呢
cmdInfo := Clipboard
Clipboard := Clip_Saved ;恢复剪切板
}
return cmdInfo
}
;https://www.cnblogs.com/xiongzaiqiren/p/16016785.html主要利用的是cmd命令控制网络重连