鼠标键盘录制回放研究与实现-毕业论文.doc

上传人:滴答 文档编号:1273478 上传时间:2019-01-26 格式:DOC 页数:48 大小:914KB
下载 相关 举报
鼠标键盘录制回放研究与实现-毕业论文.doc_第1页
第1页 / 共48页
鼠标键盘录制回放研究与实现-毕业论文.doc_第2页
第2页 / 共48页
鼠标键盘录制回放研究与实现-毕业论文.doc_第3页
第3页 / 共48页
鼠标键盘录制回放研究与实现-毕业论文.doc_第4页
第4页 / 共48页
鼠标键盘录制回放研究与实现-毕业论文.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、厦门大学软件学院毕业论文 本科毕业论文 (科研训练、毕业设计 ) 题 目: 鼠标键盘录制回放研究与实现 姓 名: 学 院:软件学院 系: 软件工程 专 业:软件工程 年 级: 2004级 学 号: 04369061 指导教师(校内): 职称: 指导教师(校外): 职称: 年 月 厦门大学软件学院毕业论文 I 摘 要 本文 通过对 Windows 消息机制和 HOOK 技术的介绍,综述了 Windows 的消息机制以及Windows 平台下的 HOOK 函数的特点和其应用。在 Windows 的 消息驱动机制下,深入的讨论和研究利用 HOOK 技术完成鼠标键盘录制回放系统的程序实现 原理和方法

2、。此外,针对不同于Windows 消息机制不同的 Linux 操作系统,本文中 给出了 基于 Linux 内核的键盘录制技术 的一些思路和建议 ,希望本文能够为以后此类工作提供帮助和较有价值的信息。 而在此前的系统实现中,已经分别完成了基于 .Net 平台和基于 VC 的鼠标键盘录制回放系统的项目开发。 目前已经存在众多的鼠标键盘录制回放软件,但是在使用的过程中,总会发现不足之处。开发本软件,一方面是为了对鼠标键盘的录制回放研究进行系统 实现;另一方面也是为了提供一个进行自动化测试的工具。 为了能够提供一个高效稳定的鼠标键盘录制回放程序, 在软件的开发过程中,参考了众多的文献和资料,在这里对以

3、上作者表示感谢。为了介绍本软件的使用价值和方法, 挖掘本软件的使用潜力,本文将会对所完成的系统功能和细节进行详细的描述。 关键词 : HOOK 鼠标键盘录制回放 消息 厦门大学软件学院毕业论文 II Abstract Through the introduction of Windows Message Mechanism and HOOK technology, this paper summaries the features and applications of them. Based on Windows Message Mechanism, this paper makes a d

4、eep discussion and research in the development of Automate REC/PLAY Utility. On the other hand, this paper studies the method of Keyboard record under the Linux. During the development stage, the Utility has been both developed by .NET and VC. There are many versions of software in this kind, but so

5、 many defaults can be found in them. Against such a background, there are two purposes of development of this software: First, it is an implementation of the research in the development of Automate REC/PLAY Utility; then it can provide an automated test tool. In the development, many documentation a

6、nd papers are referenced, thanks for their writer. At last, this paper will give a detailed introduction of the two software. Keyword: HOOK Mouse and Keyboard record and play Message 厦门大学软件学院毕业论文 III 目录 第一章 引言 . 1 1.1 选题背景 . 1 1.2 鼠标键盘录制回放的主要问题 . 1 1.3 技术研究和系统实现成果 . 1 1.4 论文结构 . 2 第二章 相关技术研究 . 3 2.1

7、 Windows 消息机制 . 3 2.2 鼠标消息和键盘消息 . 4 2.3 HOOK 机制研究 . 4 第三章 .NET 平台下的项目实现 . 8 3.1 系统开发项目管理 . 8 3.2 可行性分析 . 9 3.3 功能框图和系统流程图 . 9 3.4 系统概要设计 . 11 3.4.1 软件总体设计和程序设计流程 . 12 3.4.2 重要函数简介 . 14 3.4.3 主要数据结构 . 17 3.5 鼠标键盘录制详细设计 . 18 3.7 辅助技术简介 . 21 3.7.1 界面多风格实现 . 21 3.7.2 多语言切换 . 21 3.8 VC 平台下的项目实现简介 . 22 3.

8、9 本章小结 . 22 第四章 系统运行及案例分析 . 23 4.1 .NET 平台下的系统运行 . 23 4.2 VC 平台下的系统运行 . 32 4.3 本章小结 . 34 第五章 Linux 下键盘录制 和模拟研究 . 35 5.1 Linux 下键盘工作机理 . 35 5.2 Linux 下键盘录制设计 . 36 5.2.1 方案一 利用中断进 行记录 . 36 5.2.2 方案二 函数劫持进行记录 . 37 5.3 本章小结 . 39 第六章 总结 . 41 6.1 项目开发感想 . 41 6.2 技术展望 . 41 致谢语 . 42 参考文献 . 43 厦门大学软件学院毕业论文 I

9、V Content Chapter 1 Introduction . 1 1.1 Backgroud . 1 1.2 Main issues . 1 1.3 The achievement of this paper . 1 1.4 Paper structure. 2 Chapter 2 Related technology study . 3 2.1 Windows Message Mechanism . 3 2.2 Mouse Message and Keyboard Message . 4 2.3 HOOK Mechanism. 4 Chapter 3 The development

10、of the software . 8 3.1 Project Management . 8 3.2 Feasibility Study . 9 3.3 system flow chart . 9 3.4 Preliminary Design . 11 3.4.1 Architecture Design .12 3.4.2 The introduction of functions .14 3.4.3 Data Structure .17 3.5 Detailed Design of the software .18 3.7 Assistive technologies.21 3.7.1 Mu

11、lti Styles .21 3.7.2 Multi Language .21 3.8 The introduction of VC version software .22 3.9 Summary .22 Chapter 4 Software Running and Case study .23 4.1 The .NET versiong software running .23 4.2 The VC versiong software running .32 4.3 Summary .34 Chapter 5 Keyboard Record under Linux .35 5.1 The

12、process of Keyboard working under Linux .35 5.2 Keyboard Record under Linux research .36 5.2.1 Solution 1 Through IRQ.36 5.2.2 Solution 2 Through Function hijacking.37 5.3 Summary .39 Chapter 6 Summary .41 6.1 Project Development Feelings.41 6.2 Technology Foresight .41 Acknowledgement .42 Reference

13、s .43 厦门大学软件学院毕业论文 1 第一章 引言 1.1 选题背景 随着个人计算机的普及,计算机在这个社会中正扮演着越来越重要的角色。然而在生活当中,使用计算机的时候不得不面临着反复的同样的操作的尴尬,如软件测试人员在进行软件测试的时候,不得不重复去进行着同样的操作,而参与到各种游戏世界里的人也出现了同样的情况,所以这个时候,各种各样的鼠标键盘录制回放软件应运而生 然而当使用这些软件的时候,往往会有很多不尽如人意或者不满足自己所需求的地方,所以本文中针对鼠标键盘的录制和回放的原理和相关技术进行了深入的研究,并且实现了基于 .Net 平台和 基于 VC 的鼠标键盘录制 回放系统,希望能够为

14、用户提供一个高效稳定的鼠标键盘录制回放系统和较好的自动化测试工具, 同时本文也可成为做类似的研究的一项参考资料。 1.2 鼠标键盘录制回放的 主要问题 HOOK 技术已经不再高深莫测,而针对 Windows 的消息机制的研究资料呈数量级增长,这为 实现鼠标键盘的录制和回放提供了理论基础。而如何利用已有的 HOOK 和 Windows 消息方面的理论知识,去完成这样的工作;鼠标键盘的每一个动作都会有一个消息传递给操作系统的应用程序,需要该消息的应用程序得到消息后触发相应的事件,在鼠标键 盘的动作录制的时候怎样去记录的鼠标键盘动作所产生的消息;将记录的消息以一定的数据格式保存为脚本文件后,利用脚本

15、文件怎样去实现鼠标键盘动作的回放。这些是本文所需直面的问题。 1.3 技术研究和系统实现成果 在本文中,对 Windows 的消息机制和 HOOK 技术进行了综述, 探讨了 Windows 下如何去监听鼠标键盘的消息。通过对此前所完成开发的 2 个系统的实现的描述,介绍了实现鼠标键盘消息记录以及动作回放的原理和方法。 此外,在本文中还对如何在 Linux 系统下实现键盘动作的录制进行了详细的分析,希望借此使 本文的参考价 值有所提高。 厦门大学软件学院毕业论文 2 1.4 论文 结构 本文第一章主要介绍研究背景主要问题和成果;第二章针对鼠标键盘录制回放的相关技术进行研究;第三章介绍了 .NET

16、 平台下的系统实现;第四章对 .NET 平台下和 VC 平台下完成开发的软件进行系统运行和案例分析;第五章是侧重于 Linux 下键盘录制技术的研究;第六章是本文和项目开发过程中的总结。 厦门大学软件学院毕业论文 3 第二章 相关技术研究 2.1 Windows消息机制 Windows 平台是一个消息驱动的操作系统,而操作系统的运行时,各种系统消 息和用户消息进行频繁的来来往往。在 Windows 操作系统中,一切事件都是由消息来进行传递的,而在事件消息中附加上消息参数,由内核通知相应的处理程序进行处理。 而所谓的 Windows 消息机制,通过系统维护一个或者多个消息队列,所有产生的消息都被

17、放入或者插入到消息队列中。系统会从队列中取出消息,然后根据消息的接收句柄从而把消息发送给拥有该窗口的程序的消息循环当中。而每一个程序都有自己的消息循环,在循环中发现了属于自己的消息,则通过对消息参数的解析,去完成相应的处理。而在没有消息时,消息循环就将控制循环交回 给操作系统 1。 Windows 消息队列是 Windows 消息机制的一个重要的组成部分。系统为每一个应用程序维护一个消息队列,每当有新的消息产生的时候,就把这个消息放入到这个队列中,由应用程序自己控制取出消息并且加以相应的处理。除特权消息,其他的消息都遵循着先进先出的原则,即先进入消息队列的消息被先处理。 图 2.1 给出了 W

18、indows 下一般应用程序在消息机制驱动下的处理过程。 图 2.1 Windows 应用程序的执行过程 基于这样的一个消息机制, Windows 的应用程序则是按照“事件消息处理”的非顺厦门大学软件学院毕业论文 4 序机制运行的。事件是因,消息是果,事件产生了消息,消息对应着事件,所以每当键盘和鼠标发生类似于按键按下松开或者单击双击类似事件的时候,都会产生相应的消息。而正因为这些消息的存在,才使得我们有了监听鼠标键盘事件的可能。 2.2 鼠标消息和键盘消息 在 Windows 的消息机制下,任何的鼠标和键盘事件都会产生相应的消息,应用程序获得这些消息然后进行消息处理,对鼠标键盘消息的理解是解

19、析消息的关键。 对于键盘,每当用户按下或者是松开某个按键的时候,会产生一个中断 ,该 中断激活键盘驱动程序 KEYBOARD.DRV 来对键盘中断进行处理。 KEYBOARD.DRV 程序会根据用户不同的操作进行编码,然后调用 Windows 用户模块 USER.EXE 来生成键盘消息,并将该消息发送到消息队列中等候处理。按键产生的消息,本文中用到主要是键盘扫描码和虚拟键盘码 2。 扫描码对应着键盘上的不同键,每一个按键被按下或者释放时,都会产生一个唯一的扫描码作为本身的标识。扫描码依赖于具体的硬件设备 的,所以在应用程序中,采用虚拟键盘码来 做 处理参数,因为虚拟码是由 Windows 系统

20、定义的从而和硬件无关。 当按键产生扫描码时, KEYBOARD.DRV 截取按键的扫描码,并将它翻译成对应的虚拟码,再将扫描码和虚拟码一齐编码形成键盘消息。 Windows 在用户级上通常将这些消息封装在消息参数中,如 wParam 和lParam。 对于鼠标,对鼠标的常用操作会产生相应的消息传递给系统,如同键盘在用户级上,鼠标消息同样被封装在消息参数中 wParam 和 lParam。 wParam 参数中保存了在消息产生时其他操作进行的状态;用户可以通过位屏蔽操作来判断在该消息产生的同时,其余操作是否正在进行。这正是在程序中判断复杂鼠标操作的基本方 法。例如,上面判断拖动操作的程序段就用了

21、位操作 wParam MK_LBUTTON, 判断在鼠标移动( WM_MOUSEMOVE)的同时鼠标左键是否同时被接下。如果,鼠标左键同时按下,则位操作的结果为 TRUE,说明当前操作为拖动操作,程序可以继续进行下一步处理。 lParam 参数保存了消息产生时鼠标所在点的坐标 , 其中低 16位为 X坐标,高 16 位为 Y坐标 3。 2.3 HOOK 机制研究 Windows 消息机制使得监听鼠标键盘事件成为可能, 而每次鼠标键盘事件都产生相应的消息, 那么究竟采取什么样的技术去截 获那些消息, 处理截获的消息参数,这里就 不得不提厦门大学软件学院毕业论文 5 到 HOOK 这个概念。 参考

22、过很多的资料, HOOK 的发展历史并不是那么的清晰可见。而究竟什么是 HOOK,众多的学者有着众多的观念。 HOOK 最早是出现在操作系统当中的。无论是在 Unix 、 Windows 还是在 Linux 中都由类似的概念。之所以提出 HOOK,在于允许操作系统的用户可以根据自己的需要,在系统的调用过程中插入自己的代码,以此来完成特殊的事情。典型的 HOOK 就是用自己的功能去替代原有的函数点 ,当完成对特殊任务的处理后,再次恢复原有的函数点。 在 Windows 中, 可以将 HOOK 理解成是 Windows 消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的 某种消息,

23、这所监视的窗口可以是由其他的进程所创建的。由于这样的 子程 的存在,每当有消息到达之后,在目标窗口处理消息之前处理该消息 。从这个角度来看, HOOK 实际上也可以看作是一个处理消息的程序段,通过系统调用,将它挂入系统。每当特定的消息发出时,在没有到达目的窗口前, HOOK 程序先截获该消息,优先得到对该消息的控制权。完成这样的工作后, HOOK 函数就可以对消息进行各种各样的处理,包括解析记 录等等,完成处理后,可以继续传递该消息或者直接将该消息抛弃 4。 HOOK 技术发展到今天,已经不再像以前那样的高深莫测,而伴随着它在越来越多场合的应用,已经逐渐发展向 2 个方向了。一种是 Windows 中的概念, 在本文所提到的完成开发的鼠标键盘录制回放系统都采用的是这样技术。 在 这 种情形里,系统实际上已经在可以扩展的地方,预先放好了一些钩子在 那里,你可以在自己需要的时候,挂上自己想要的东西 (见图2.2)。 图 2.2 Windows 中的 HOOK 相对于 Windows 来说, Unix 系统中,其基本思想是一致的,细微的差距在于扩展点的提

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。