Upload
jefferyzb
View
978
Download
8
Embed Size (px)
DESCRIPTION
Citation preview
2008 - 01 - 22
Lua应用开发
张搏
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
提纲
• 1. 界面动作脚本– 1.1 体系结构– 1.2 底层实现– 1.3 脚本特性
• 2. 模块加载• 3. 服务容器– 3.1 线程同步
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
模块体系结构
调用
执行注册
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
Lua解释器
• Lua_State• 设置脚本参数• 执行脚本
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
底层函数
• 函数类型
• 函数参数
• 函数注册
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
Lua脚本• 键盘鼠标函数• 窗口函数
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
底层实现• 鼠标操作– mouse_event 【 Windows.h 】
• 键盘操作– keybd_event 【 Windows.h 】
• 窗口操作– GetForegroundWindow 【 Windows.h 】– PostMessage(hwd, WM_SYSCOMMAND,
SC_MAXIMIZE, 0) 【 Windows.h 】• 杂项– Sleep 【 Windows.h 】– Info 【 log4cpp 】
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
脚本特性
• 优点–复杂逻辑–灵活扩展–支持复杂类型–不依赖具体控件类型
• 缺点–鼠标操作依赖坐标位置
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
使用配置文件
• 唯一服务参数
• 文件要素– scriptName– params
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
服务应用
• Q: 服务的粒度?–解释器• 用户不关心实现• 调用服务时由用户输入脚本名称• 调用服务时由用户输入脚本参数的 Name 和 Value
– Lua脚本• 服务包装人员指定脚本名称和参数 Name• 用户调用服务时只输入脚本参数 Value• 每个 Lua脚本代表的功能应当理解为一个服务
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
• Lua解释器的 DLL唯一• 用 Python脚本封装解释器,成为一个服务• 在 Python脚本中指定 Lua脚本和参数• 以 Python脚本作为服务的接口,将 Lua的实现封装起来。
服务调用流程
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
服务包装流程
• 生成WSDL文件–描述服务的参数
• 生成 Python脚本–指定对应的 Lua脚本–设置 Lua脚本参数
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
后续任务
• 在服务包装界面中添加新的服务类型–类似于之前的WSDL服务包装–增加 Lua脚本文件名的输入
• 生成 Python脚本
SOFTWARE ENGINEERING INSTITUTE
XIDIAN UNIVERSITY
遗留问题
• 脚本录制• 服务名称• 其他应用