键盘监听程序课程设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

键盘监听程序课程设计

目录

目录 (1)

一设计目的 (2)

二设计内容 (2)

三设计要求 (3)

四设计过程 (3)

1、窗口函数程序实现的步骤 (3)

2、消息循环 (4)

3、编写窗口过程函数 (5)

4、自启动模块设计 (6)

5、定时发送邮件模块设计 (7)

6、程序流程图 (8)

五设计总结 (10)

参考文献 (10)

一设计目的

通过本次课程设计,设计一个键盘监听程序,系统启动后自动记录所有键盘信息的功能,能够记录键盘的输入值,且该程序具有自动启动功能,并能够定期通过网络给某人的指定的邮箱发送所记录的信息。

二设计内容

1、题目分析,查找资料和总体设计。

2、详细设计、代码编制、程序调试。系统功能要求如下:

模块一该部分通过设计一个窗口,并在窗口中响应键盘消息,记录键盘的相关按键记录,实现键盘监听的功能。

模块二该部分通过对注册表的修改,将该程写入注册表,实现该程序的随系统的启动而启动。

模块三该部分通过调用系统的定时函数,实现邮件的定时发送。

3、结果分析、完成课程设计报告。

三设计要求

1、学生能够较深入的理解网络编成的设计方法,并在所要求的设计时间内,利用自己所熟悉的语言完成本题目的程序编制。

2、程序要能正确运行,完成预功能。

3、要求设计清晰、美观的用户界面,当操作出错时,程序要有出错提示信息。

4、上交设计报告。重点阐述程序的有关算法说明、程序的流程图以及子程序的功能和参数的说明及程序代码。

四设计过程

1、窗口函数程序实现的步骤

(1)WinMain函数的定义

WinMain函数的原型声明如下:

int WINAPI WinMain(

HINSTANCE hInstande,

HINSTANCE hPrevInstance,

LPSTR IpCmdLine,

Int nCmdShow

);

WinMain函数接收4个参数,这些参数都是在系统调用WinMian函数时,传递给应用程序的。

第一个参数hInstance表示该程序当前运行的实例的句柄。第二个参数hPrevInstance表示当前实例的前一个实例的句柄。第三个参数IpCmdLine是一个以空终止的空符串,第四个参数nCmdShow指定程序的窗口应该如何显示。

(2)创建一个窗口

设计一个窗口类

一个完整的窗口有许多的特征,包括光标、图标、背景色等。因此在创建一个窗口之前,要对该类型的窗口进行设计,指定该窗口的相关特征。Windows 为我们定义了一个窗口所应该有的基本属性。在此次的程序中,运用了wndClass这样一个函数,来实现窗口属性的设置。其中的第二个成员变量IpfnWndProc是一个函数指针,指向窗口过程函数,窗口过程函数是一个回调函数。回调函数在特定的事件或条件发生时由另外一方调用的,用于对该事件或条件进行响应。

(3)注册窗口类

调用RegisterClass函数对窗口进行注册,注册成功后才能创建该类型的窗口。具体实现如下:RegisterClass(&wndClass);

(4)创建窗口

设计好窗口并且将其注册成功后,就可以用CreateWindow函数产生这种类型的窗口了。其函数的原型声明如下:

HWND CreateWindow(

LPCTSTR lpClassName, // registered class name

LPCTSTR lpWindowName, // window name

DWORD dwStyle, // window style

int x, // horizontal position of window

int y, // vertical position of window

int nWidth, // window width

int nHeight, // window height

HWND hWndParent, // handle to parent or owner window

HMENU hMenu, // menu handle or child identifier

HINSTANCE hInstance, // handle to application instance

LPVOID lpParam // window-creation data

);

(5)显示及更新窗口

其中,显示窗口通过ShowWindow函数实现。更新窗口通过UpdateWindow 函数实现。到此,一个窗口函数的创建就算完成了。

2、消息循环

(1)编写一个消息循环,不断的从消息队列中取出消息,并进行响应。要从消息队列中取出消息,我们需要调用GetMessage()函数。通常的消息循环函数的代码如下:

while(GetMessage(&msg, NULL, 0, 0)) //消息循环

{

TranslateMessage(&msg); //虚拟键消息转换为字符消息 DispatchMessage(&msg); //消息回传给操作系统

}

GetMessage函数只有在接收到WM_QUIT消息时,才返回0。此时while 语句的判断条件为假,循环退出,程序才能结束运行。在没有接收到WM_QUIT 消息时,Windows应用程序就通过while循环来保证程序始终处于运行状态。Windows应用程序的消息处理机制如下图所示:

窗口过程

应用程序

消息队列

操作系统

(2)GetMessage()(3)DispatchMessage()

(1)

(4)

图2-1

(2)操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中。

(3)应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息。取出消息后,应用程序可以对消息进行一些预处理,例如,放弃对某些消息的响应,或者调用TranslateMessage产生新的消息。

(4)应用程序调用DispatchMessage,将消息回传给操作系统,消息是由MSG 结构体对象来表示的,其中就包含了接收消息的窗口的句柄。因此,DispatchMessage函数总能进行正确的传递。

(5)系统调用WNDCLASS结构体的IpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理。

(6)发送消息可以使用SendMessage和PostMessage函数。SendMessage将消息直接发送给窗口,并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕后,该函数才返回。PostMessage函数将消息放入与创建窗口的线程相关联的消息队列后立即返回。除了两个函数外,还有一个PostThreadMessage 函数,用于向线程发送消息,对于线程消息,MSG结构体中的hwnd成员为NULL。

3、编写窗口过程函数

(1)窗口过程函数用于处理发送给窗口的消息。一个Windows应用程序的主要代码部分就集中在窗口过程函数中。窗口过程函数的声明如下:

相关文档
最新文档