扫描二维码关注官方公众号

89 评论

0 收藏

分享

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

 

马上注册,结交更多好友,享用更多功能,让你轻松玩转无忧吧。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
截图202505212341205104.png 易语言 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 实现跨进程文本写入,比模拟按键更高效稳定
案例二:智能鼠标点击助手
功能说明
通过图形化界面预设点击坐标,支持定时循环点击和窗口吸附功能
界面布局
**
核心逻辑代码
.版本 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 系统策略对程序功能的限制,始终将用户体验与系统稳定性放在首位。


游客,如果您要查看本帖隐藏内容请回复


捷云鲸技术社区(bbs.jieyunjing.com)免责声明:
使用本社区服务即视为同意本声明全部条款。
1. 本社区所有技术、工具及内容仅限**学习研究**使用,旨在提升安全技术水平,严禁用于非法、商业及其他不良用途,违规后果由使用者自行承担。
2. 社区内容及资源来源于网络,仅代表发布者个人观点,与本社区无关,相关法律责任由发布者自负。
3. 资源版权归原作者所有,用户下载后须在**24小时内删除**,版权争议与本社区无关。
4. 禁止任何破坏社区正常运营的行为,违规将视情节处理,社区保留追责权利。
5. 本社区坚决支持正版,如涉及侵权,请通过站长邮箱或QQ联系删除。
6. 本社区对本声明拥有最终解释权,可适时修改并公示生效。
站长邮箱:jieyunjingvip@qq.com
站长QQ:4040068
捷云鲸社区bbs.jieyunjing.com
回复

举报 使用道具

全部回复 (89)
查看全部
沙发!沙发!无忧技术吧 无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

无忧技术吧 我是来刷分的,嘿嘿
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

没看完~~~~~~ 先顶,好同志无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

过来看看的无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

找到好贴不容易,我顶你了,谢了无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

无忧技术吧 我是来刷分的,嘿嘿
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

无忧技术吧 写的真的很不错
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

找到好贴不容易,我顶你了,谢了无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

过来看看的无忧技术吧
捷云鲸社区bbs.jieyunjing.com

举报 回复 使用道具

admin 实名认证
管理员
主题 1380
回复 75
粉丝 1

灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老 沙发王 源码大师 在线王 终身成就 机器王 知识库 土豪 活跃会员 最佳新人 热心会员