1、计算机屏幕监控系统的开发与设计中文摘要随着计算机技术以及网络的飞速发展,它使人们的学习、工作、生活方式都发生了变化,给人们学习、工作带来方便的同时也造成不良影响,因此计算机管理在日常生活中的地位变得越来越重要。为保证正常的学习和工作,开发一个适用于学校机房学生学习管理的监控系统是非常必要的。本论文研究的是如何开发一个应用简单、操作方便、实时性强的计算机屏幕监控系统,目的是对局域网内计算机进行屏幕监控。本系统是在Visual C+集成开发环境下,采用C/S模式,运用网络通信和图像处理技术进行开发的。功能包括C/S互连、计算机屏幕画面的捕获、计算机屏幕画面的显示、计算机屏幕的锁定与解锁。关键词:屏
2、幕监控,服务器,客户端,socket编程,图像处理ABSTRACTWith the rapid development of the computer technology and network, it makes peoples study, work, lifestyles changed and bring convenience to their study, work, but also adversely affects the daily life of the computer management in the position becomes increasingly i
3、mportant. In order to guarantee normal study and work, the development of monitoring system for managing the students who study in classroom is essential. This thesis studies how to develop a computer screen control system which is convenient operation and strong real-time, and the purpose is to mon
4、itor the computers screen in the LAN. The system is developed in the Visual C + integrated development environment. It uses C/S model, and the use of network communication and image processing technology, implementation of the features include C/S interconnect, computer screen capture, computer scre
5、en display, computer screen lock and unlock. Key Words:screen control, server, client, socket programming, image processing目录中文摘要1ABSTRACT2第一章引言51.1.课题研究的背景51.2.国内外研究现状51.3.研究内容及贡献61.4.论文组织6第二章系统开发环境与网络通信技术72.1.开发工具的选择72.2.Visual C+编程基础72.2.1.C+语言72.2.2.Visual C+ 6.0简介72.3.通信协议简介72.4.Windows Sockets
6、 API简介8第三章图像处理基础知识103.1.图像103.2.调色板103.3.设备无关位图10第四章系统需求分析和系统设计124.1.需求分析124.2.系统设计124.2.1.系统目标124.2.2.系统功能结构124.2.3.系统预览134.2.4.业务流程图144.2.5.程序运行环境154.2.6.数据库设计15第五章客户端设计165.1.客户端模块概述165.2.客户端技术分析165.3.客户端实现过程17第六章公共类设计18第七章系统登录模块设计197.1.系统登录模块概述197.2.系统登录模块技术分析197.3.系统登录模块实现过程20第八章主窗体设计218.1.主窗体概述
7、218.2.主窗体技术分析218.3.主窗体实现过程21第九章操作员管理模块设计249.1.操作员管理模块概述249.2.操作员管理模块技术分析249.3.操作员管理模块实现过程24第十章系统设置模块设计2710.1.系统设置模块概述2710.2.系统设置模块技术分析2710.3.系统设置模块实现过程27总结和展望29参考文献30致谢31附录132附录233附录334第一章引言1.1.课题研究的背景随着Internet在我国的迅速发展,上网人群逐渐由从事IT技术的专业人员转向普通大众。上网人群包括中老年人,其中青少年占有很大比率。Internet丰富的资源给人们带来方便的同时也存在许多不良信息
8、危害青少年的身心健康,一些家长担心青少年上网会影响学习。随着应用发展,机房设备增多,机房数目增多而且位置分散,出现了大量增加管理人员,由于管理系统的厂家不同又造成操作管理人机界面繁多,带来诸多不便,进行统一监控或异地监控更是不可能,这样的局面非常不适应现代生产管理发展。另一方面,近年信息的交换传输、嵌入式技术、电源集成等先进和现代化技术设备为集中监控系统、远程管理、设备网络化的建立和应用又打下了基础。可以说前端一体化、视频数字化、监控网络化、系统集成化、管理智能化是现代监控系统的发展方向。而数字化是网络化的前提,网络化又是系统集成化的基础。所以,监控系统发展的最大特点是数字化、网络化、智能化,
9、具有这些特点的监控系统可以称为现代监控系统。计算机屏幕监控系统正是现代监控系统的一种,它是学生评教系统的一个子系统,它是用于教学,是针对学生在上电脑课时,部分学生不听课,而抓取学生计算机屏幕,从而进行监控。通过屏幕监控系统,可以很清楚的对客户端计算机和网络的运行情况进行掌握,能够有效的提高计算机和网络使用效率,对学生起到有效的督促作用。计算机屏幕监控系统主要是对计算机屏幕进行监控。该系统包含服务器端和客户端。系统运用socket编程,选择UDP协议将客户端的屏幕图像信息发送到服务器端并显示。服务器端不仅可以了解到客户端的屏幕情况,同时也可以对客户端屏幕进行锁定和解锁。1国内外关于屏幕监控系统的
10、研究比较多,随着各个学校的多媒体网络教学的普及化,针对计算机和网络的监控系统需求也随之产生。1.2.国内外研究现状计算机屏幕监控系统也属于远程控制软件的一种,它是在远端机器知道,允许的情况下,对远方机器进行远程控制的软件。该系统由客户端和服务端两部分构成。客户端:应用于目标机器上的软件;服务器端:控制目标机器的软件。黑客使用的特洛伊木马技术也是这种监控技术,它的英文叫做“Trojanhorse”其名称取自希腊神话的特洛伊木马记,最初是通过木马这种形式传播病毒,随着Internet的普及,木马程序兼备伪装和传播两种特征并结合远程控制技术四处泛滥,具有隐蔽性和非授权性的特点。我们说科学技术是一把双
11、刃剑,远程监控软件与木马软件都是基于同一种技术而开发的,只是远程监控软件利用科学技术的有利一面为人类服务,毕竟远程控制软件是用人来控制的,而使用木马搞破坏的人则利用了科学技术作了违背道德甚至犯法的事。 国内的LSC局域网屏幕监控系统、IP-guard、第三只眼企业监控系统等网络监控系统不仅具备计算机屏幕监控的基本功能,而且还拥有控制对方操作软件、监控聊天内容、邮件内容等众多监控及管理的功能。国外的软件比如Schneider Monitor Pro V7.2 监控软件,一种实时客户机/ 服务器SCADA软件解决方案,广泛用于工业领域和生产流程的自动化。它不仅能开发所有监控画面,而且还提供所有的实
12、时和历史数据处理功能。随着计算机技术的发展,远程控制手段也不断改进,越来越智能化,跨平台运行,模块定制设计等等。1.3.研究内容及贡献本系统包括客户端和服务器端。客户端主要实现的功能是抓取屏幕信息,发送信息到客户端,同时接收服务器端的命令。服务器端包括主窗体、系统登录、操作员管理、系统设置四个模块。主窗体用于接收并显示屏幕信息。操作员管理窗体用于添加、修改、删除操作员信息。系统登录窗体用于系统在启动时验证用户身份。系统设置窗体用于设置客户端IP。研究的重点在于屏幕图像信息的传送和接收,保持屏幕信息的时时传送。本系统能够对局域网中的任一台计算机进行屏幕监控,并能够时时传送屏幕信息,同时也能够通过
13、对屏幕进行锁定和解锁实现屏幕控制。1.4.论文组织第一章:引言。本章主要介绍本课题研究的背景、内容进展以及贡献。第二章:系统开发环境与网络通信技术。本章主要介绍开发本系统所应用的技术和原理。包括开发工具和编程语言的简介、通信协议和socket函数基本概念介绍。第三章:图像处理基本知识。本章主要介绍开发本系统所涉及到的图像的基本概念的介绍。包括图像、调色板、设备无关位图的简介。第四章:系统需求分析和系统设计。本章主要是阐述系统的需求以及系统的设计目标。其中包括系统的功能结构、业务流程、程序运行环境和数据库设计。第五章:客户端设计。本章包括客户端模块的概述以及客户端技术分析和实现过程。第六章:公共
14、类设计。本章主要介绍封装数据库操作的类。第七章:系统登录模块设计。本章包括系统登录模块的概述以及技术分析和实现过程。第八章:主窗体设计。本章包括主窗体概述以及技术分析和实现过程。第九章:操作员模块设计。本章包括操作员模块概述以及技术分析和实现过程。第十章:系统设置模块设计。本章包括系统设置模块概述以及技术分析和实现过程。第二章系统开发环境与网络通信技术2.1.开发工具的选择 Visual C+在系统软件设计、内存管理、多线程控制等方面具有明显优势,因此采用VC+作为开发工具。2.2.Visual C+编程基础 应该掌握如何分割UDP数据报,如何发送和接收UDP数据报,如何连接Acess数据库,
15、如何抓取屏幕,如何自定义控件。2.2.1.C+语言 C+包括C的全部特征、属性和优点,同时添加了对面向对象编程(OOP)的完全支持,与C相比,C+有许多优点,主要有封装性、继承性、多态性。22.2.2.Visual C+ 6.0简介 VC6 是微软98 年推出的产品,它提供了强大的编译能力以及良好的界面操作性。能够对Windows 95/98、Windows NT 以及Windows 2000 下的C+程序设计提供完善的编程环境。同时VC6 对网络、数据库等方面的编程也都提供相应的环境支持。2.3.通信协议简介 UDP 是一种无连接的数据报协议,UDP 只是简单地把数据发送到目的主机的端口中,
16、不用通知目的方就可把数据传达过去,也不再是双方共同维持一个连接。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。 UDP报头由4个域组成,其中每个域各占用2个字节,具体包括:源端口号、目标端口号、数据报长度、校验值。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。UDP协议使用报头中的校验值来保证数据的安全。2.4.Windows Sockets API简介Win32应用程
17、序接口(API),简称为Win32 API,是用来编制控制Windows操作系统的编程接口,由一组包含在动态链接库中的函数和子程序组成,通过它们可以编程访问操作系统的功能。在该软件设计中设计很多Windows底层操作,软件的主要功能皆由相应的Win32 API函数实现。3网络编程技术是本软件设计中用到的主要技术之一。在Windows操作系统环境下应用程序通过编程接口访问TCP/IP协议集的应用程序编程规范称之为WinSock API。WinSock API提供了一系列系统调用,使用这些系统调用可以实现TCP、UDP、ICMP和IP等多种网络协议之间的通信;它采用客户机服务器的通信机制,使网络客
18、户机和服务器方通过各自的Socket接口现成一个完整的套接字,如图1所示。Socket()Bind()Listen()Accept()Recev()Send()Close()Socket()Connect()Send()Close()Recev()服务端客户机阻塞,等待客户数建立连接请求数据处理服务请求应答数据 图1 Sockt接口示意图4在客户机与服务器之间建立通信信道,实现网络间的连接管理,并可进行数据交换。套接字是网络通信的基石,是支持TCP/IP协议的网络通信的基本操作单元;可以将套接字看作不同主机间的进程进行双向通信的端点;一个套接字是通信的一端,在这一端上可以找到与其对应的一个名字
19、;一个正在被使用的套接口都有它的类型和与其相关的进程;套接字存在通信领域中。根据网络通信的特性,套接字可以分为两类:流套接字和数据报套接字。流套接字提供一种可靠的面向连接的数据传输方法,数据无差错、无重复地发送,且按发送顺序进行接收;数据报套接字提供一种不可靠的、非连接的数据包通信方式,数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且按接受顺序混乱。该软件使用流套接字实现数据传输。第三章图像处理基础知识3.1.图像 组成数字图像的基本单位是像素(Pixel),也就是说,数字图像是像素的集合。数字图像通常存放在计算机的外存储器设备中,例如硬盘、光盘等,在需要进行显示和处理时才被
20、调入内存的数组中。从本质上讲,图像数据在计算机内存或硬盘中是以字符型数据存在的,这与其他整型数据或者浮点型数据没有任何区别,都是一种数字表达符号,当把它在计算机屏幕上显示出来时,才是我们人眼看到的真正有意义的数字图像。普通的显示器屏幕也是由许多点(像素)构成的,显示时,电子枪每次从左到右、从上到下进行扫描,为每个像素着色,利用人眼的视觉暂留效应就可以显示出一屏完整的图像。比如,我们常说的屏幕分辨率为1024768,刷新率为80Hz,意思是说屏幕上每行像素为1024个,共768行,而且每秒重复扫描80次。目前的显示设备的刷新率都在80Hz以上,一般屏幕刷新频率大于80Hz时,人眼感受不到屏幕刷新
21、而产生的闪烁,这种显示器被称为位映像设备。所谓位映像,即是指一个二维的像素矩阵,而位图就是采用位映像方法显示和存储的图像。一幅图像的显示就是将图像的像素映射到屏幕的像素上并显示一定的颜色。3.2.调色板 调色板是一种GDI对象,是颜色映射接口,用来将颜色映射到显示器或打印机,它允许应用程序在不干扰其他应用程序的前提下,可以充分利用输出设备的颜色描绘能力。当需要在屏幕或打印机上显示一个DIB时,系统需要根据DIB的颜色表生成调色板。假定我们在一个窗口里只显示一个DIB。首先,我们需要创建一个 “逻辑调色板”,逻辑调色板是包含了DIB中颜色的GDI对象。然后我们必须“实现”(realize)这个调
22、色板,使它进入硬件的“系统调色板”,系统调色板是显示卡同时能显示256种颜色的颜色表。如果一个程序是一个前台程序,则“实现”处理过程会尽量把所有的颜色拷贝到系统调色板中,它不会改变20 种标准Windows颜色,但它会使我们的DIB在最大程度上接近于我们所需要的那样。3.3.设备无关位图BMP文件可以分为DIB格式和DDB格式。DDB格式(Device-Dependent Bitmanp)是与设备有关的BMP文件格式,用来存储与某个显示设备或打印设备内存兼容的不压缩图像,因其依赖于硬件设备,因此不常用。DIB格式(Device-Independent Bitmanp)是与设备无关的BMP文件格
23、式,也就是我们前面介绍的BMP文件格式,它自带颜色信息,颜色表管理非常容易,具有很强的通用性。调入内存中的DIB位图是脱离文件而存在的,其结构可以分为三部分,如图2所示。内存中的DIB实际上是BMP文件结构去掉位图文件头结构后剩下的三部分,而这三部分结构包含了位图显示和处理所需要的所有信息。biSizebiWidthbiHeightbiBitCountbiCompressionbiSizeImagebiXPelsPerMeterbiYPellsPerMeterbiClrUsedbiClrImportant每像素1bit的位图有2个表项每像素8bit的位图有256个表项每像素24bit的位图没有
24、表项每表项长度为4字节(32bit)像素按每行每列的顺序排列每一行字节数扩展成4的倍数BITMAPINFOHEADER位图信息头颜色表位图数据图2 内存中的DIB结构第四章系统需求分析和系统设计4.1.需求分析 计算机屏幕监控系统主要是对计算机屏幕进行监控。因此计算机监控系统需要实现屏幕信息的实时发送和接收。由于屏幕信息需要实时显示,因此信息的传输速度要快,屏幕信息需要实时发送。为此,选择UDP协议进行传输。为了防止服务器端随意地接收客户端发来的数据报,服务器端需要对发来的数据报进行过滤,只有是指定的客户端才接收数据。4.2.系统设计4.2.1.系统目标本系统属于小型的计算机屏幕监控系统,可以
25、对某一台计算机进行屏幕监控。本系统主要实现以下目标: 系统采用人机交互的方式,界面美观友好。 屏幕信息需要实时显示,网络延时不能大于1秒。 服务器端可以随时运行,只要客户端运行,就能够显示屏幕信息。 系统运行时占用内存不能大于10MB,以免影响系统性能。 客户端运行时需要隐藏显示窗口,其感觉不到在运行。4.2.2.系统功能结构计算机屏幕监控系统功能结构图如下图3所示:计算机屏幕监控系统客户端服务器端主窗体主窗体系统登录操作员管理系统设置图3 系统功能结构图4.2.3.系统预览计算机屏幕监控系统分为客户端和服务器端两部分,其中客户端运行时将隐藏窗体,服务器端主要由四个窗体组成,分别为主窗体、操作
26、员管理窗体、系统登录窗体、系统设置窗体。其中,主窗体用于接收并显示屏幕信息以及控制,如图4.1所示。操作员管理窗体用于添加、修改、删除操作员信息,如图4.2所示。系统登录窗体用于系统在启动时验证用户身份,如图4.3所示。系统设置窗体用于设置客户端IP,如图4.4所示。图4.1 主窗体 图4.2 操作员管理窗体 图4.3 系统登录窗体 图4.4 系统设置窗体4.2.4.业务流程图计算机屏幕监控系统业务流程图如图5所示系统登录登录成功主窗体系统设置客户端控制操作员管理图5 计算机屏幕监控系统业务流程图4.2.5.程序运行环境本系统运行中对其运行环境有一定的要求,具体如下:系统开发平台:Micros
27、oft Visual C+6.0 系统开发语言:C+数据库管理系统软件:Microsoft Access 2000 分辨率:最佳效果1024*1280像素运行平台:Windows XP(SP2)/Windows 2000(SP4) /Windows Server 2003(SP1)4.2.6.数据库设计1.数据库分析本系统中,数据库主要用于记录操作员信息及客户端信息,系统涉及的数据量比较小,因此本校系统采用Microsoft Access2000作为后台数据库,数据库命名为db_Video,其中包含2张数据表,分别是操作员信息表(tb_UserInfo)和客户端信息表(tb_ClientInf
28、o)。2数据库设计在系统启动时,服务器端弹出登录窗口,要求用户输入操作员名称和密码。其中,用户的操作员名称和密码信息存储在数据表中。操作员信息实体E-R图如下图6所示。为了过滤服务器端接收的数据报,使其接收指定客户端发来的数据,需要存储客户端IP。为此,需要单独设计一个客户端信息实体对象,如下图7所示。操作员信息表(tb_UserInfo)操作员姓名操作员密码图6 操作员信息实体E-R图 客户端信息表(tb_ClientInfo)客户端IP图7 客户端信息实体E-R图3.数据库逻辑结构设计tb_UserInfo(操作员信息表)表tb_UserInfo用于存储操作员的名称和密码。tb_Clien
29、tInfo(客户端信息表)表tb_ClientInfo用于存储客户端IP。第五章客户端设计5.1.客户端模块概述计算机屏幕监控系统分为客户端和服务器端两大模块,其中,客户端主要作用是实时抓取本机的屏幕信息,将其分成多个数据报,发送到服务器。为了保证屏幕信息能够完整地发送服务器,客户端在发送一个数据报后,需要等待服务器发来的确认信息,然后继续发送下一个数据报。5.2.客户端技术分析客户端要实现屏幕信息的发送,需要解决两个关键的问题:一是获取屏幕信息,将其转换为位图格式;二是通过UDP协议将位图信息发送到服务器。1、 将屏幕信息转换为位图结构首先需要获取屏幕信息,可以使用GetDesktopWin
30、dow方法获取一个屏幕窗口指针,通过该指针获取屏幕窗口的设备上下文。然后通过定义一个内存画布对象,将屏幕窗口的设备上下文输出到位图中。接下来将根据位图对象获取位图信息。一个位图文件通常由“位图文件头”、“位图信息头”、“调色板”和“实际位图数据”4个部分组成。其中,位图文件头主要包含位图标记、位图大小等信息,在程序中使用BITMAPFILEHEADER结构来描述。“位图信息头”和“调色板”2个部分描述了位图的宽度、高度、是否压缩、位图颜色等信息,在程序中可以使用BITMAPINFO结构描述。由于程序中发送的数据不是以位图文件的形式发送的,只发送位图信息头、调色板和实际位图数据,因此,不需要位图
31、的文件头。因为通过位图信息头、调色板和实际位图数据3个部分就可以绘制位图了,没有必要发送位图信息头。2.通过UDP协议将位图信息发送到服务器5为了将本地数据传输到服务器,需要利用套接字函数发送数据。在Visual C+中,为了使用套接字函数,首先需要引用相应的头文件和库文件。#include Winsock2.h#pragma comment (lib,Ws2_32.lib)然后在应用程序初始化时调用WSAStartup函数初始化套接字。WSADATA data;WSAStartup(2,&data); /初始化套接字接下来调用套接字函数创建UDP套接字。/代码省略m_Socket = soc
32、ket(AF_INET,SOCK_DGRAM,0); /创建套接字/代码省略 /绑定套接字if (bind(m_Socket,(sockaddr*)&addr,sizeof(addr)=SOCKET_ERROR)MessageBox(套接字绑定失败!);套接字创建成功后,可以调用sendto方法发送数据。sendto(m_Socket,pPackage,packsize,0,(sockaddr*)&addr,sizeof(addr);5.3.客户端实现过程客户端的主要功能是抓取屏幕信息,将其发送到服务器。具体实现如下:(1)创建一个基于对话框的工程,工程名称为Client。(2)在StdAfx
33、.h头文件中引用套接字库和头文件。(3)在应用程序类的InitInstance方法中初始化套接字。(4)改写应用程序的虚方法ExitInstance,清理套接字资源。(5)自定义一个消息,在套接字接收到数据时发送到主窗口中。定义每个数据报中包含位图数据的大小。(6)在对话框初始化时创建套接字,将其绑定到指定的位置,并初始化相应的成员变量。(7)在对话框类中添加一个SendData方法,用于向指定的地址发送数据。其中,参数index表示数据报的序号,bmpsize表示数据报中位图数据的大小,frames表示总的发送次数,pSendBuf表示发送的数据报数据,addr表示服务器地址。代码见附录1。
34、(8)向对话框中添加OnReceived方法,用于接收服务器端发来的确认信息或控制信息。代码见附录2。(9)向对话框中添加消息映射宏,将CM_RECEIVED消息与OnReceived方法关联。这样,当套接字接收到数据时将调用OnReceived方法读取数据。(10)处理对话框的WM_TIMER消息,在发送数据后,如果5秒内没有收到服务器端的确认信息,放弃当前位图的发送,重新抓取屏幕位图发送。(11)处理对话框的OnOk方法,将屏幕信息转换为位图信息,划分数据报的格式,计算每一个位图信息需要发送多少次数据报,调用SendData方法发送数据。第六章公共类设计在服务器端需要对数据库进行操作。对有
35、关数据库的操作封装为一个类CDataManage。该类中包含ADO Connection对象、ADO Commond对象和ADO Recordset对象,并提供InitDatabase方法用于构造ADO对象、连接数据库。CDataManage类具体实现如下:(1)在Visual C+工程中的StdAfx.h头文件中导入msado15.dll动态库。(2)创建一个普通类,命名为CDataManage。在该类中添加如下成员变量。(3)在全局区域初始化静态成员m_ConnectStr。(4)向CDataManage类中添加InitDatabase方法构造ADO对象,并连接数据库。BOOL CData
36、Manage:InitDatabase() try /捕捉异常m_pConnect.CreateInstance(ADODB.Connection);/创建ADO Connection对象m_pCommand.CreateInstance(ADODB.Command);/创建ADO Command对象m_pRecord.CreateInstance(ADODB.Recordset);/创建ADO Recordset对象m_pConnect-ConnectionString = m_ConnectStr.AllocSysString();/设置ADO Connection对象的连接字符串m_pC
37、onnect-Open(,-1);catch(_com_error &err) /处理异常 /显示错误信息MessageBox(NULL,数据库初始化失败,提示,MB_ICONINFORMATION);return FALSE;return TRUE;第七章系统登录模块设计7.1.系统登录模块概述为了防止非法用户使用系统,在系统的服务器端设置了系统登录模块。在系统启动时,只有输入正确的用户名和密码才能进入主界面。系统登录模块运行结果如下图8所示。图8 系统登录模块运行结果7.2.系统登录模块技术分析为了验证用户输入的用户名和密码是否正确,需要根据用户输入的用户名称和密码从数据库中查询用户信息,
38、如果有信息返回,表明用户名称和密码正确,否则不正确。程序使用ADO Command对象执行查询操作,首先,需要设置ActiveConnection属性,该属性关联一个ADO Connection对象,然后设置CommandText属性,该属性表示ADO Command对象将要执行的SQL语句。下面是ADO Command对象执行SQL语句的过程。_ParameterPtr puser,ppassword; /定义ADO Command对象的参数CServerApp* pApp = (CServerApp*)AfxGetApp(); /获取应用程序对象/创建参数puser=pApp-m_Data
39、Manage.m_pCommand-CreateParameter(user,adVarWChar,adParamInput,100,(_bstr_t)user);ppassword=pApp-m_DataManage.m_pCommand-CreateParameter(password,adVarWChar,adParamInput,100,(_bstr_t)password);/添加参数pApp-m_DataManage.m_pConnect-CursorLocation = adUseServer; /设置游标类型pApp-m_DataManage.m_pCommand-ActiveC
40、onnection=pApp-m_DataManage.m_pConnect; /设置ADO Command对象的连接数据pApp-m_DataManage.m_pCommand-Parameters-Append(puser); /插入参数pApp-m_DataManage.m_pCommand-Parameters-Append(ppassword); /插入参数pApp-m_DataManage.m_pCommand-CommandText = select * from tb_userInfo where username = user and password = password;
41、/设置SQL语句_RecordsetPtr pRecord= NULL;/定义一个ADO Recordset对象/调用Execute方法执行SQL语句pRecord = pApp-m_DataManage.m_pCommand-Execute (0,NULL,adCmdText);pApp-m_DataManage.m_pCommand-Parameters-Delete(user); /删除参数pApp-m_DataManage.m_pCommand-Parameters-Delete(password);/删除参数7.3.系统登录模块实现过程(1)创建一个对话框,在对话框中添加1个图像控件
42、、2个标签、2个编辑框和2个按钮控件,设置控件主要属性如表1所示表1 系统登录窗体用到的主要控件控件资源ID主要属性设置用途IDC_USERNAME无输入登录用户名称IDC_PASSWORDPassword属性为TRUE输入登录用户密码(2)为控件命名,然后修改对话框类的PreTranslateMessage虚方法,当编辑框获得焦点时,按Enter键将控制焦点移动。(3)处理“登录”按钮的单击事件,验证用户名和密码是否正确。如果正确,关闭对话框并返回IDOK。代码见附录3。第八章主窗体设计8.1.主窗体概述系统服务器端主窗体主要用于显示客户端传来的位图信息,并且控制客户端抓图的其实坐标。除此之
43、外,还设置了三个按钮,分别控制客户端的屏幕锁定、屏幕解锁以及强制关机。服务器端主窗体运行效果如图9所示。图9 主窗体运行结果8.2.主窗体技术分析主窗体需要接收客户端传来的数据,并且向客户端发送确认信息。下面介绍相关Windows套接字函数进行数据的发送和接收。6Socket函数:用于创建一个套接字。Bind函数:用于将套接字绑定到一个已知的地址上。Revfrom函数:用于读取套接字数据。Sendto函数:用于向指定地址发送数据。8.3.主窗体实现过程(1)创建一个基本对话框的工程,默认情况下将建立一个对话框,该对话框将成为应用程序的主窗体。(2)向对话框中添加11个按钮控件、2个群组框控件、
44、1个图像控件,设置控件属性如表2所示。表2 主窗体用到的主要控件控件资源ID主要属性设置用途IDC_BACKGROUPType属性为Frame,Border属性为TRUE显示图像信息IDC_SYSSETTINGCaption属性为系统设置,Owner draw属性为TRUE调用系统设置对话框(3)自定义一个消息,用于在套接字有数据接收时发送到主窗口中。(4)向对话框中添加ShowImage方法,显示位图数据。(5)向对话框中添加OnReceived方法,用于接收客户端发来的数据。在数据接收后,向客户端发送确认信息。void CServerDlg:OnReceived() /代码省略int re
45、t = recvfrom(m_Socket,buffer,MAX_BUFF,0,(sockaddr*)&addr,&factsize);/接收数据/代码省略sendto(m_Socket,pData,8,0,(sockaddr*)&addr,size); /发送确认信息if (orderID=0) /接收第一帧数据/代码省略else/代码省略if (endID=1)/接收到最后一帧,显示位图数据/代码省略delete buffer;(6)在对话框的消息映射部分手动添加一个消息映射,用于将CM_RECEIVED与OnReceived方法关联。(7)向对话框中添加OnButtonDown方法,用于向客户端发送控制指令。void CServerDlg:OnButtonDown(UINT nID)/代码省略switch(nID)/判断按钮的IDcase IDC_BTDOWN:
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922