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
相关推荐
懋学的前端攻城狮7 分钟前
Next.js + TypeScript + Shadcn UI:构建高性能懒加载与无限滚动系统
前端·react.js·前端框架
宋辰月32 分钟前
Vue2的进阶Vue3
前端·javascript·vue.js
酷飞飞1 小时前
C语言的复合类型、内存管理、综合案例
java·c语言·前端
java1234_小锋1 小时前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情数据可视化分析-热词情感趋势树形图
python·信息可视化·自然语言处理
宸津-代码粉碎机2 小时前
LLM 模型部署难题的技术突破:从轻量化到分布式推理的全栈解决方案
java·大数据·人工智能·分布式·python
都叫我大帅哥2 小时前
当数据流经LangChain时,RunnablePassthrough如何成为“最懒却最聪明”的快递员?
python·langchain
都叫我大帅哥2 小时前
机器学习界的“钢铁侠”:支持向量机(SVM)全方位指南
python·机器学习
姜太小白2 小时前
【前端】CSS Grid布局介绍及示例
前端·css
柴 基5 小时前
Jupyter Notebook 使用指南
ide·python·jupyter
风继续吹..6 小时前
后台管理系统权限管理:前端实现详解
前端·vue