1、目 录目 录.1一 设计目的.2二 设计内容.2三 设计要求.2四 设计过程.21、窗口函数程序实现的步骤.22、消息循环.43、编写窗口过程函数.54、自启动模块设计.65、定时发送邮件模块设计.66、程序流程图.8五 设计总结.9参考文献.9一 设计目的通过本次课程设计,设计一个键盘监听程序,系统启动后自动记录所有键盘信息的功能,能够记录键盘的输入值,且该程序具有自动启动功能,并能够定期通过网络给某人的指定的邮箱发送所记录的信息。二 设计内容1、题目分析,查找资料和总体设计。2、详细设计、代码编制、程序调试。系统功能要求如下:模块一 该部分通过设计一个窗口,并在窗口中响应键盘消息,记录键盘
2、的相关按键记录,实现键盘监听的功能。模块二 该部分通过对注册 的 , 该程写入注册 ,实现该程序的 系统的启动 启动。模块三 该部分通过调 系统的定时函数,实现邮件的定时发送。3、结 分析、 课程设计 。三 设计要求1、 能够 入的 网络编 的设计 ,并在所要求的设计时 内, 自 所 的 本题目的程序编制。2、程序要能 , 功能。3、要求设计 、的 ,currency1“时,程序要有“信息。4、fifl设计 。 程序的有关 、程序的流程图程序的功能和参数的 程序代码。四 设计过程1、窗口函数程序实现的步骤”1 函数的定 函数的如下: 函数 4个参数, 参数 在系统调 函数时,给应 程序的。一个
3、参数 该程序 的实的 。二个参数 实的一个实的 。三个参数 一个 的 ,四个参数 指定程序的窗口应该如 。”2 一个窗口设计一个窗口 一个 的窗口有的, 、图 、背景色等。因此在 一个窗口之,要对该 的窗口进 设计,指定该窗口的相关。 为我们定了一个窗口所应该有的基本属性。在此次的程序中, 了 l 样一个函数,来实现窗口属性的设置。其中的二个 员变量 f 一个函数指针,指向窗口过程函数,窗口过程函数 一个回调函数。回调函数在定的事件或条件发 时由另外一 调 的, 于对该事件或条件进 响应。”3注册窗口 调 g l 函数对窗口进 注册,注册 功后才能 该 的窗口。具体实现如下: g l & l
4、”4 窗口设计好窗口并且 其注册 功后,就可 函数产 种的窗口了。其函数的如下:D l l / g l l / DO D yl / yl x / z l f y / l f / g / gD / l U u / u l l f / l l VOD l / - ”5 更新窗口其中, 窗口通过 函数实现。更新窗口通过U 函数实现。到此,一个窗口函数的 就 了。2、消息循环”1编写一个消息循环,不断的从消息队列中取“消息,并进 响应。要从消息队列中取“消息,我们需要调 G g ”函数。通常的消息循环函数的代码如下:l G g & g U 0 0 /消息循环 l g & g /虚拟键消息转换为字 消息
5、D g & g /消息回 给currency1系统G g 函数只有在 到QU消息时,才返回0。此时 l 的判断条件为假,循环退“,程序才能结束 。在没有 到QU消息时, 应 程序就通过 l 循环来保证程序始 处于 状态。 应 程序的消息处 机制如下图所:2GetMessage3DispatchMessage14图2-1”2currency1系统 到应 程序的窗口消息, 消息投 到该应 程序的消息队列中。”3应 程序在消息循环中调 G g 函数从消息队列中取“一条一条的消息。取“消息后,应 程序可对消息进 一 处 ,如,放弃对某消息的响应,或者调 l g 产 新的消息。”4应 程序调 D g ,
6、 消息回 给currency1系统,消息 由 G结构体对象来 的,其中就 含了 消息的窗口的 。因此,D g 函数总能进 的 。”5系统调 D 结构体的 f 员保存的窗口过程函数的指针调 窗口过程,对消息进 处 。”6发送消息可使 g 和 g 函数。 g 消息直 发送给窗口,并调 该窗口的窗口过程进 处 。在窗口过程对消息处毕后,该函数才返回。 g 函数 消息放入与 窗口的线程相关联的消息队列后立即返回。除了两个函数外,还有一个 g 函数, 于向线程发送消息,对于线程消息, G结构体中的 员为U 。3、编写窗口过程函数”1窗口过程函数 于处 发送给窗口的消息。一个 应 程序的主要代码部分就集中
7、在窗口过程函数中。窗口过程函数的如下: U BK D U g l D U ”2具体函数中有按键消息处 ,通过_ U实现,发现有按键消息时,通过G uD 函数获得始的按键信息,再通过 Fl 写入文件中,写下按键记录。绘制窗口的,通过_ 。窗口客区的一部分或者全部变为无效 系统会发送_ 消息 通知应 程序 新绘制窗口 窗口刚 的时候 个客区 无效的 因为 个时候程序还没有在窗口fi绘制任 调 U 函数时 会发送_ 消息给窗口过程 对窗口进 新.后,需要对窗口进 ,使 _D O 。 窗口 的关 按 的时候 系统会给应 程序发送一条_ O 消息 “一个消息 结束. 调 D y 函数 窗口 D y 函数
8、在 窗口后会向窗口发送_D O 消息 此时 窗口 了 应 程序并没有退“.G g 函数只有在到_QU消息才返回0 此时消息循环才结束 程序退“. 要 程序退“ 我们 响应_D O 消息 并在消息响应代码中调 Qu g .向应 程序的消息队列中投 _QU消息 给 Qu g 函数的参数值 为_QU消息的 参数 个值通常 函数的返回值 。D f 函数调 的窗口过程 对应 程序没有处 的其 消息进 处 .4、自启动模块设计”1该部分通过 程序的可 程序写入注册 ,实现 系统的启动 启动。自启动有两种 一种 ,在本 计机中 注册 编,找到下的键值:K _U _U f f u V 后在 键值下新一个字 键
9、值,并更为l , 个字 键值, currency1 “窗口的数值数“中设置要 系统自动 的程序的即可。需要注fi的 ,输入的文件fl文件。”2另一种 样 在注册 中进 设置,找到键值:K _ O _ OF f ,找到并 u u ,后 键值设置为需要启动的程序即可。 两种 可.在 实 中 了 一 通过 f f u V u 找到键值 再通过 ul / 注册 键 / 0 G_ D_ u g FKBD gg D ugKBD gg . x 32找到后 可 程序写入注册 实现自启动.5、定时发送邮件模块设计”1邮件发送功能通过 l 的函数相关的数“结构,”“其结构可 的实现发送邮件的功能。实现一个 的邮件
10、发送过程,只需要一个函数 l , 与邮件系统关系 ,要能够使 的功能,系统 有 的邮件系统,如Oul 、Oul x 、u 、 等.在本次设计中,邮件系统使 的 ul ,过试,发现没有题。 的始 , 两个步骤: 、得到函数入口 。发送邮件 l ,发送邮件功能就 对 l 的 。下 个 函数的参数定。U OG F l D l U OGulU l g l g F G flFl g U OGul l 、ulU 和ul 三个参数, 设置为0 就 可 了 。 flFl g 有 三 个 有 效 , 分 _D OG, _ OGO_U, _ O。 l g 个参数,指向一个 g 的结构,详细 定了一个邮件的全部信息
11、。”2结构 g 使 时 定一个 g 的变量, 其 。现在我们只要 设定l z u ” 题、l z x” 文、l O g ”发件人、 u ”件人计数,l ”一个 含全部件人的数, Fl u ” 件计数、l Fl ” 含 个 件信息的数 。 u 和 Fl u 的值一定要与实 的件人和 件数目相 。”3结构 D 设置 ul l 、l z 、l z ”4结构 Fl D 设置的有l z 、 两个参数”5定时功能定时功能通过调 系统函数 ”来实现。其如下U_ D / l U_ D / f U ul / - u lu O l Fu / u 此程序中的时 值设置的 20 , 就 20 ,程序会向指定的邮箱发送
12、键盘记录。6、程序流程图”1键盘监 流程图图6-1键盘监 流程图五 设计总结通过 次的键盘监听程序的设计,使得我对窗口中响应键盘消息的机制更入的了 了,通过对窗口的属性设置、注册窗口 、 窗口、 窗口、更新窗口、消息循环、窗口过程函数的编写,具体 入的体会了窗口响应键盘消息的实现过程和 。 时,对于 的函数有了进一步 与了 ,如 发送邮件的使 、 ”进 窗口的 、窗口过程函数的编写、G F g u 的使 等等, 了编程的能 。关于程序 时,无 实现邮件发送的题,过 的调试, 无 发现题。currency1发送邮件的程序取“来 时,发现 没有题的,能够 的发送邮件。 ,currency1 个程序
13、 的放入到 个程序中后, 无 发送邮件。后发现 由于进程的 题。记录的文件一直处于 状态,并且不断有记录向文件中写入, 时 要 该文件 不 的。其因,还 由于设计程序 没有考currency1系统的题,文件 后没有立关 。在后的程序设计中,要考关于currency1系统的 步 题。 种题的“现 好 我要currency1 过的 一 课 实 实 自 的编程功 样 才能够 到 的 。试中 到了不的题 有通过fi网查 资料 了 还有通过与的fl流 发现并 了题.过程有 在 个 步 题的过程中 无 自 能 查 资料的能 还 实 的动 能 有了 的 .我 只有通过不断的诸如此 的课程设计 才能够更好的检
14、我们平时所 的知识。参考文献1计机网络全教程石志国 薛为民 江俐 编著 华 “版社 北京fl通 “版社 2004年2计机网络全基础袁津 吴砚农 编 人民邮电“版社2002年3网站:录1、窗口函数的实现源代码: /主函数D G g D l l . yl = _ D | _V D l .l f = l . l x = 0 l . x = 0 l . = l . = U D_ O l .u = u U D_ O l . B g u = B U G O _B U l .l z u = U l .l zl = KBD g /窗口属性设置g l & l /注册窗口 = / 窗口KBD g / l KBD g / _OV DDO / yl 200 / l x 200 / l y 480 / l x z 110 / l y z U / l U / u l / g l U / l G g & g U 0 0 /消息循环 l g & g /虚拟键消息转换为字 消息D g & g /消息回 给currency1系统u g. U BK D U g l /窗口过程函数f - . y = _ K BO D