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
相关推荐
我是华为OD~HR~栗栗呀几秒前
华为OD-Java面经-21届考研
java·c++·后端·python·华为od·华为·面试
Mr.Jessy4 分钟前
JavaScript学习第六天:函数
开发语言·前端·javascript·学习·html·1024程序员节
刺客-Andy25 分钟前
Python 第二十节 正则表达式使用详解及注意事项
python·mysql·正则表达式
code_YuJun30 分钟前
管理系统——应用初始化 Loading 动画
前端
oak隔壁找我31 分钟前
JavaScript 模块化演进历程:问题与解决方案。
前端·javascript·架构
Elieal44 分钟前
AJAX 知识
前端·ajax·okhttp
sulikey1 小时前
Qt 入门简洁笔记:从框架概念到开发环境搭建
开发语言·前端·c++·qt·前端框架·visual studio·qt框架
新子y1 小时前
【小白笔记】「while」在程序语言中的角色
笔记·python
java1234_小锋1 小时前
[免费]基于Python的YOLO深度学习垃圾分类目标检测系统【论文+源码】
python·深度学习·yolo·垃圾分类·垃圾分类检测
烛阴2 小时前
循环背后的魔法:Lua 迭代器深度解析
前端·lua