admin 发表于 2025-5-21 23:52:37

易语言 Accessible 工具开发与实战源码分享

易语言 Accessible 工具开发与实战源码分享
一、易语言 Accessible 工具开发概述
易语言作为国产全中文可视化编程环境,在快速开发 Windows 平台辅助工具领域具有独特优势。本文聚焦的 "Accessible 工具" 主要指通过调用 Windows 系统 API 实现的窗口自动化、键盘鼠标模拟、无障碍交互等类型工具,常见应用场景包括:

[*]软件自动化测试脚本

[*]重复性操作辅助工具

[*]跨程序数据交互桥梁

[*]特殊场景控制终端
核心技术体系

[*]Windows API 调用:通过DLL命令声明调用 user32.dll、kernel32.dll 等系统库,实现窗口句柄操作(FindWindow、GetWindowText)、输入模拟(keybd_event、mouse_event)、进程控制(CreateProcess)等功能

[*]精易模块应用:集成成熟的窗口操作、文本处理、数据类型转换等功能,简化开发流程

[*]多线程技术:通过启动线程实现界面响应与后台操作分离,避免假死现象
二、常用开发工具与环境配置
必备工具链

工具名称
功能定位
下载地址

易语言 5.9
主开发环境
官方网站

精易模块 V9.3
核心功能支持库
精易论坛

HwndHelper
窗口句柄查看工具
第三方工具站

Dependency Walker
API 依赖分析工具
微软官网


环境配置步骤

[*]将精易模块文件精易模块.ec放入易语言安装目录lib文件夹

[*]在易语言菜单工具->支持库配置中勾选 "精易模块"

[*]安装 HwndHelper 并设置快捷键(推荐 F8)用于快速获取目标窗口句柄
三、实战案例源码解析
案例一:跨程序文本自动填充工具
功能说明
监控指定窗口标题,当目标窗口激活时自动填充预设文本到指定编辑框
核心代码
.版本 2
.支持库 eAPI

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕
' 初始化填充规则
填充规则.目标窗口标题 = “记事本”
填充规则.目标控件类名 = “Edit”
填充规则.填充文本 = “易语言自动化填充测试”

.子程序 _时钟1_周期事件
.局部变量 目标句柄, 整数型
.局部变量 控件句柄, 整数型

目标句柄 = FindWindow (, 填充规则.目标窗口标题)
.如果 (目标句柄 ≠ 0 且 取窗口激活状态 (目标句柄))
    控件句柄 = FindWindowEx (目标句柄, 0, 填充规则.目标控件类名, )
    .如果 (控件句柄 ≠ 0)
      发送信息 (控件句柄, #WM_SETTEXT, 0, 到字节集 (填充规则.填充文本))
      时钟1.时钟周期 = 0 ' 避免重复填充
    .否则
      调试输出 ("未找到目标控件")
    .如果结束
.否则
    时钟1.时钟周期 = 500 ' 恢复监控
.如果结束

实现要点

[*]使用FindWindow获取目标窗口句柄,通过窗口标题精准定位

[*]FindWindowEx递归查找子控件,支持类名 / 标题双重条件过滤

[*]发送信息API 实现跨进程文本写入,比模拟按键更高效稳定
案例二:智能鼠标点击助手
功能说明
通过图形化界面预设点击坐标,支持定时循环点击和窗口吸附功能
界面布局
**https://example.com/clicker_ui.png
核心逻辑代码
.版本 2
.支持库 eAPI

.程序集 窗口程序集_主窗口

.子程序 _开始按钮_被单击
.如果 (开始按钮.标题 = “开始”)
    开始按钮.标题 = “停止”
    启动线程 (&点击线程, , )
.否则
    开始按钮.标题 = “开始”
    终止线程 (点击线程句柄)
.如果结束

.子程序 点击线程
.局部变量 目标窗口句柄, 整数型
.局部变量 偏移X, 整数型
.局部变量 偏移Y, 整数型

.循环判断首 ()
    目标窗口句柄 = FindWindow (, 窗口标题编辑框.内容)
    .如果 (目标窗口句柄 ≠ 0)
      获取窗口位置 (目标窗口句柄, 坐标.左边, 坐标.顶边, , )
      偏移X = 到整数 (X坐标编辑框.内容)
      偏移Y = 到整数 (Y坐标编辑框.内容)
      mouse_event (#MOUSEEVENTF_LEFTDOWN, 坐标.左边 + 偏移X, 坐标.顶边 + 偏移Y, 0, 0)
      延迟 (50)
      mouse_event (#MOUSEEVENTF_LEFTUP, 坐标.左边 + 偏移X, 坐标.顶边 + 偏移Y, 0, 0)
    .否则
      输出调试文本 ("目标窗口未找到")
    .如果结束
    延迟 (到整数 (间隔时间编辑框.内容) × 1000)
.循环判断尾 (真)

技术亮点

[*]mouse_event实现硬件级鼠标点击模拟,支持绝对坐标和相对偏移两种模式

[*]窗口吸附功能通过实时获取目标窗口位置并计算偏移量实现

[*]线程安全设计:使用独立线程处理点击逻辑,避免阻塞界面线程
案例三:键盘钩子监听工具
功能说明
实时监控键盘输入,支持自定义热键触发和敏感词过滤
核心实现
.版本 2
.支持库 eAPI
.支持库 spec

.程序集 程序集_全局
.静态变量 键盘钩子, 整数型

.子程序 安装键盘钩子
键盘钩子 = SetWindowsHookEx (#WH_KEYBOARD_LL, &键盘钩子处理, 取模块句柄 (), 0)
.如果 (键盘钩子 = 0)
    信息框 (“钩子安装失败”, #错误图标, )
.如果结束

.子程序 键盘钩子处理, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型

.如果 (nCode = 0)
    .如果 (取低字 (lParam) = #键代码_A 且 (GetKeyState (#键代码_LCONTROL) < 0))
      ' 触发Ctrl+A热键
      处理热键事件 ()
      返回 (1) ' 拦截该按键
    .否则
      .如果 (敏感词过滤开关 = 真)
            检查输入内容 (字符代码到字符 (wParam))
      .如果结束
    .如果结束
.如果结束
返回 (CallNextHookEx (键盘钩子, nCode, wParam, lParam))

关键技术

[*]低级键盘钩子(WH_KEYBOARD_LL)通过 SetWindowsHookEx 安装,支持全局按键监控

[*]热键识别:利用 GetKeyState 判断组合键状态,实现多键组合触发

[*]按键拦截:通过返回非零值阻止系统处理特定按键事件
四、开发注意事项
1. 权限控制

[*]涉及系统级操作(如全局钩子、进程控制)需以管理员权限运行程序

[*]使用IsUserAnAdmin函数检测当前权限,未获取时提示用户以管理员身份重启
2. 兼容性处理

[*]不同 Windows 版本 API 参数可能存在差异,建议使用条件编译区分

[*]高 DPI 环境下需调用SetProcessDPIAware避免坐标偏移问题
3. 防检测机制

[*]模拟输入时添加随机延迟(延迟 (取随机数(50, 150)))避免被反作弊系统识别

[*]窗口操作间隔加入随机偏移,模拟人工操作习惯
4. 异常处理

[*]使用保护线程防止未处理异常导致程序崩溃

[*]重要操作前添加目标窗口存在性检查(FindWindow返回值判断)
五、进阶开发资源

[*]官方文档:易语言帮助系统(F1)内置完整 API 说明

[*]开源社区:精易论坛(www.eyuyan.la)海量模块与源码分享

[*]逆向工具:OD 调试器、X32Dbg 用于分析系统 API 调用流程

[*]视频教程:B 站搜索 "易语言自动化开发" 系列课程
通过合理组合易语言的可视化开发优势与 Windows API 的强大功能,开发者能够快速构建出稳定高效的 Accessible 工具。建议初学者从简单的窗口操作工具入手,逐步掌握多线程、钩子函数、跨进程通信等核心技术,最终实现复杂场景的自动化解决方案。实际开发中需特别注意 Windows 系统策略对程序功能的限制,始终将用户体验与系统稳定性放在首位。


**** Hidden Message *****

墨香书韵 发表于 2025-5-22 00:03:38

沙发!沙发!无忧技术吧 无忧技术吧

书意逸逸情 发表于 2025-5-22 00:26:30

无忧技术吧 我是来刷分的,嘿嘿

画境逸致 发表于 2025-5-22 00:35:49

没看完~~~~~~ 先顶,好同志无忧技术吧

雅情逸致 发表于 2025-5-22 00:46:15

过来看看的无忧技术吧

画境逸雅意 发表于 2025-5-22 01:09:20

找到好贴不容易,我顶你了,谢了无忧技术吧

风荷举袂 发表于 2025-5-22 02:26:24

无忧技术吧 我是来刷分的,嘿嘿

书海扬帆 发表于 2025-5-22 02:32:10

无忧技术吧 写的真的很不错

琴心剑胆 发表于 2025-5-22 03:31:03

找到好贴不容易,我顶你了,谢了无忧技术吧

雪舞霓裳 发表于 2025-5-22 03:31:04

过来看看的无忧技术吧
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 易语言 Accessible 工具开发与实战源码分享