bat+python实现easy connect自动连接

公司项目一直要用到vpn,发现vpn连一两个小时后会断线,还会重新输入账号密码,一天要输入六七次,非常影响工作效率。于是想着能不能写一个脚本来帮我自动输入账号,密码,自动连接vpn。

1使用bat命令启动easyconnect

bat 复制代码
@echo off //关闭回显
chcp 65001 //执行后,当前窗口即启用 UTF-8 编码
//下面一步需要找到你电脑上安装的easyconnect,并且启动
start /d "C:\Program Files (x86)\Sangfor\SSL\SangforCSClient"  SangforCSClient.exe
timeout /T 1 /NOBREAK //**强制等待 1 秒且忽略用户按键**

好了,到这里已经能够自动打开easyconnct了

1使用python库pywinauto来模拟输入账号,密码,点击按钮

首先,介绍一下 pywinauto

  1. Windows GUI 自动化

    • 支持操作按钮、文本框、列表框等控件,模拟鼠标点击、键盘输入

    • 兼容 Win32 API(传统应用)和 UI Automation(现代 UWP/WPF 应用)双后端

  2. 跨版本兼容性

    • 支持 Windows 7 及以上系统,覆盖多数企业级应用场景
  3. 自动化流程控制

    • 可实现启动应用、输入文本、保存文件、关闭窗口等完整操作链
二、安装与基础使用

安装命令

less 复制代码
bash
复制
pip install pywinauto  # 基础安装[1,5](@ref)
pip install pywinauto[uia]  # 扩展 UIA 后端支持[6](@ref)

基础操作示例

less 复制代码
python
复制
from pywinauto import Application

# 启动记事本并输入文本
app = Application(backend="uia").start("notepad.exe")  # 推荐 UIA 后端[2,6](@ref)
main_window = app.window(title="无标题 - 记事本")
main_window.Edit.type_keys("Hello, Pywinauto!")  # 文本输入[3,10](@ref)

# 保存文件
main_window.menu_select("文件->另存为")  # 菜单操作
save_dialog = app.window(title="另存为")
save_dialog.Edit.set_text("example.txt")  # 直接设置文件名[6](@ref)
save_dialog.Save.click()  # 点击保存按钮

好,想了解更多请阅读[官方文档](What is pywinauto --- pywinauto 0.6.8 documentation) 接下来,我们使用pywinauto帮我们输入账号和密码,并自动点击登录

python 复制代码
from pywinauto import application
from pywinauto import timings
import time

# 初始化应用程序对象
app1 = application.Application()
app2 = application.Application()
app3 = application.Application()

# 检测是否存在标题为"EasyConnect"的窗口
while True:
    try:
        app1.connect(title_re="EasyConnect", found_index=0)
        window = app1.window(title_re="EasyConnect", found_index=0)
        button = window.child_window(class_name="Button", found_index=0)
        app2.connect(title_re="EasyConnect", found_index=1)
        window = app2.window(title_re="EasyConnect", found_index=0)
        # window.set_focus()
        button = window.child_window(class_name="Button", found_index=0)
        time.sleep(1)

        # # 填写vpn地址
        app3.connect(title_re="EasyConnect", found_index=0)
        window = app3.window(title_re="EasyConnect", found_index=0)
        edit_control = window.child_window(class_name="Edit", found_index=0)
        edit_control.set_edit_text("https://122.144.215.2/")
        

        # 填写账号密码
        username_edit = window.child_window(class_name="Edit", found_index=1)
        username_edit.set_edit_text("daicq_weic")

        password_edit = window.child_window(class_name="Edit", found_index=2)
        password_edit.set_edit_text("Stnc@123")

        # 模拟点击登录按钮 (如果有)
        login_button = window.child_window(class_name="Button", found_index=0)
        login_button.click()

    except Exception as e:
        # print(str(e))
        pass

完整代码如下

@echo 复制代码
chcp 65001
start /d "C:\Program Files (x86)\Sangfor\SSL\SangforCSClient" SangforCSClient.exe
cd /c C:\Users\Administrator\Desktop
timeout /T 1 /NOBREAK

python -c '
from pywinauto import application
from pywinauto import timings
import time

# 初始化应用程序对象
app1 = application.Application()
app2 = application.Application()
app3 = application.Application()

# 检测是否存在标题为"EasyConnect"的窗口
while True:
    try:
        app1.connect(title_re="EasyConnect", found_index=0)
        window = app1.window(title_re="EasyConnect", found_index=0)
        button = window.child_window(class_name="Button", found_index=0)
        app2.connect(title_re="EasyConnect", found_index=1)
        window = app2.window(title_re="EasyConnect", found_index=0)
        # window.set_focus()
        button = window.child_window(class_name="Button", found_index=0)
        time.sleep(1)

        # # 填写vpn地址
        app3.connect(title_re="EasyConnect", found_index=0)
        window = app3.window(title_re="EasyConnect", found_index=0)
        edit_control = window.child_window(class_name="Edit", found_index=0)
        edit_control.set_edit_text("https://122.144.215.2/")
        

        # 填写账号密码
        username_edit = window.child_window(class_name="Edit", found_index=1)
        username_edit.set_edit_text("daicq_weic")

        password_edit = window.child_window(class_name="Edit", found_index=2)
        password_edit.set_edit_text("Stnc@123")

        # 模拟点击登录按钮 (如果有)
        login_button = window.child_window(class_name="Button", found_index=0)
        login_button.click()

    except Exception as e:
        # print(str(e))
        pass

'
pause
相关推荐
再学一点就睡3 小时前
前端网络实战手册:15个高频工作场景全解析
前端·网络协议
tjjucheng3 小时前
靠谱的小程序定制开发哪个好
python
num_killer3 小时前
小白的Langchain学习
java·python·学习·langchain
WangYaolove13143 小时前
基于深度学习的中文情感分析系统(源码+文档)
python·深度学习·django·毕业设计·源码
C_心欲无痕4 小时前
有限状态机在前端中的应用
前端·状态模式
C_心欲无痕4 小时前
前端基于 IntersectionObserver 更流畅的懒加载实现
前端
candyTong4 小时前
深入解析:AI 智能体(Agent)是如何解决问题的?
前端·agent·ai编程
柳杉4 小时前
建议收藏 | 2026年AI工具封神榜:从Sora到混元3D,生产力彻底爆发
前端·人工智能·后端
weixin_462446234 小时前
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程
运维·前端·自动化
CheungChunChiu5 小时前
Linux 内核动态打印机制详解
android·linux·服务器·前端·ubuntu