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
相关推荐
天蒙蒙亮10 小时前
打安卓apk包+“应用商城”发布
前端·uni-app
夜晚回家10 小时前
Python 身份运算符详解 | is 与 == 到底差在哪
python
fengye20716110 小时前
cpython框架结构
python
Lank_M10 小时前
视频压到指定大小总超一截?码率控制的误差拆开看
前端
用户20545557880010 小时前
飞书运费台账同步到 MySQL:单一策略落地教程
前端
LEE10 小时前
别把 Agent 架构画成组织架构图——子代理该不该拆,用任务级 Eval 说话
前端·后端·ai编程
梦醒江南10 小时前
RAG 证据链验收:别只测答案像不像,要证明它从哪里来
前端·agent·ai编程
用户912940468484210 小时前
大模型返回 JSON 后,先过这道 Python 校验
python
费曼学习法10 小时前
无人值守AI内容矩阵实战(8):把标题 A/B 实验做成可判胜的流水线
前端
Dmz丶10 小时前
前端转 AI 100 天 Day 32:LLM 客户端工程化——重试、超时、降级、限流
python