14
2008 - 01 - 22 Lua 应应应应 张张

Use Lua For Configuration

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Use Lua For Configuration

2008 - 01 - 22

Lua应用开发

张搏

Page 2: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

提纲

• 1. 界面动作脚本– 1.1 体系结构– 1.2 底层实现– 1.3 脚本特性

• 2. 模块加载• 3. 服务容器– 3.1 线程同步

Page 3: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

模块体系结构

调用

执行注册

Page 4: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

Lua解释器

• Lua_State• 设置脚本参数• 执行脚本

Page 5: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

底层函数

• 函数类型

• 函数参数

• 函数注册

Page 6: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

Lua脚本• 键盘鼠标函数• 窗口函数

Page 7: Use Lua For Configuration

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 】

Page 8: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

脚本特性

• 优点–复杂逻辑–灵活扩展–支持复杂类型–不依赖具体控件类型

• 缺点–鼠标操作依赖坐标位置

Page 9: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

使用配置文件

• 唯一服务参数

• 文件要素– scriptName– params

Page 10: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

服务应用

• Q: 服务的粒度?–解释器• 用户不关心实现• 调用服务时由用户输入脚本名称• 调用服务时由用户输入脚本参数的 Name 和 Value

– Lua脚本• 服务包装人员指定脚本名称和参数 Name• 用户调用服务时只输入脚本参数 Value• 每个 Lua脚本代表的功能应当理解为一个服务

Page 11: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

• Lua解释器的 DLL唯一• 用 Python脚本封装解释器,成为一个服务• 在 Python脚本中指定 Lua脚本和参数• 以 Python脚本作为服务的接口,将 Lua的实现封装起来。

服务调用流程

Page 12: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

服务包装流程

• 生成WSDL文件–描述服务的参数

• 生成 Python脚本–指定对应的 Lua脚本–设置 Lua脚本参数

Page 13: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

后续任务

• 在服务包装界面中添加新的服务类型–类似于之前的WSDL服务包装–增加 Lua脚本文件名的输入

• 生成 Python脚本

Page 14: Use Lua For Configuration

SOFTWARE ENGINEERING INSTITUTE

XIDIAN UNIVERSITY

遗留问题

• 脚本录制• 服务名称• 其他应用