积分信息:
无忧币:108846
交易币:2147480567
贡献:999999
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转无忧吧。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
易语言 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 说明
- 逆向工具:OD 调试器、X32Dbg 用于分析系统 API 调用流程
- 视频教程:B 站搜索 "易语言自动化开发" 系列课程
通过合理组合易语言的可视化开发优势与 Windows API 的强大功能,开发者能够快速构建出稳定高效的 Accessible 工具。建议初学者从简单的窗口操作工具入手,逐步掌握多线程、钩子函数、跨进程通信等核心技术,最终实现复杂场景的自动化解决方案。实际开发中需特别注意 Windows 系统策略对程序功能的限制,始终将用户体验与系统稳定性放在首位。
|
无忧技术吧-免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.whct.net无关。
2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
4、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
5、无忧技术吧(www.whct.net)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。无忧技术吧不承担任何因为技术滥用所产生的连带责任。无忧技术吧内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或QQ与我们联系处理。
6、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:whctwlgzs@foxmail.com),本站将立即改正。
联系方式:
站长邮箱:whctwlgzs@foxmail.com
站长QQ:4040068
|