计算机实验室学生上机操作监控系统的研究和实现_第1页
计算机实验室学生上机操作监控系统的研究和实现_第2页
计算机实验室学生上机操作监控系统的研究和实现_第3页
计算机实验室学生上机操作监控系统的研究和实现_第4页
计算机实验室学生上机操作监控系统的研究和实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机实验室学生上机操作监控系统的研究与实现高职院校在人才培养目标中都把学生动手能力的培养作为主要目标。 学生动手能力的培养主要不是靠课堂理论教学, 而主要通过实习操作等实践性教学环节来保证, 对于软件开发类、 图形图像、动漫等课程来说都离不开上机这个环节。随着网络与软件业的发展,现在的PC机不仅仅是学习、开发的工具,而且还是娱乐消遣的工具,你可以用它听音乐、看电影、 上网等。 现在很多学生由于年轻、 抵不住 PC 机的这些诱惑,利用上机实验的时间听音乐、看电影、上网等,而且他们做这些时极具有隐蔽性、 指导教师不易发现。 为了保证有好的教学效果,需要指导教师对学生实验的监督力度要加强。本系统分

2、成服务端与客户端, 但是对服务端与客户端的功能分配与实现有所改进与优化。本系统的流程图简化如图 1:服务端安装在教师机或管理员的教师机上面( 内存最好要大点) ,客户端安装在学生机上面,然后组装成一个局域网。服务端实现的功能初步规划如下 : 管理员登录、学生信息管理、群发文件、客户端进程允许列表设置、实时监控管理、教师演示及录制、学生演示、屏幕监控、电子点名、遥控辅导、发送提醒信息等等 ; 客户端实现的功能初步规划如下: 学生注册及登录、 作业提交、发送请求操作、举手提问、录制教学视频等等。由于篇幅关系,本文只对服务端如何与客户端通信及服务端如何控制与监控客户端程序进程进行归纳与总结。设计与实

3、现思路: 监控程序运用 Visual Studio 开发工具开发,选择WIN32应用程序类型。监控程序实现了自启动,运行于 后台,与服务器保持通信。实现过程 : 学生机启动后,监控程序自动启动运行于后台,接收服务器端的消息, 得到可以打开的应用程序运行列表。 在实 验的过程中, 每 100 秒监控计算机所打开的应用进程一次, 当发 现一个不在集合列表中的应用程序进程打开时, 监控程序自动关 闭进程程序, 并将学生的上机情况传送到服务器端, 存储于服务 器的数据库中, 供以后作学生平时成绩统计、 教师教学评估使用。下面详细讲解其实现过程:1、程序设计过程在 VC中通过 Win32 Applica

4、tion- A Simple Win32 application 建立一个工程, 取名为 cli 。 打开 winmain() 函数, 按以下过程完成各项功能。建立一个 scoke ,接收服务器信息,即学生实验可打开的应用程序集,保存在一个字符串中。用 SetTime() 先添加一个计时器对象。将uElapse 参数设置为 100000,即每 100 秒监控一次。然后在 while(GetMessage() 语句中实现监控与处理。监控中, 先发现用户打开的应用程序窗口, 再依次得到应用的进程 ID 与应用程序名,如果是非指定的程序,则上报服务器,同时自动关闭进程。自启动的实现。2、服务器端与客

5、户端通信实现Windows下编写网络应用程序大都利用socke进行数据通信, 包括客户端与服务器端编写, 本文主要探讨客户端程序的编写。客户端编写遵守以下过程:创建客户套接字( CREAT)E。SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);与远程服务器进行连接(CONNECT。)SOCKADDR_IN addrSrv;/ 为便于调试,取服务器IP 为 127.0.0.1 ,建立应用时再修改为服务器的 IP 。addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);addrSrv.sin_family=

6、AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR) );(3)开始数据传输,发送(SEND接UR ( RECEIVE。char recvBuf255;recv(sockClient,recvBuf,100,0);send(sockClient,”本机 IP+应用程序名 + 时间,strlen(发 送串 )+1,0);关闭套接字(CLOSE SOCKET。)closesocket(sockClient);服务器端通信主要包括CREA、TBIND、 LISTEN、

7、ACCEP、TSEND、RECEIVE CLOSE SOCKET过程。不做详细讨论。3、识别客户端打开的当前应用程序名该功能的实现分为三步, 首先得到实验机打开的窗口句柄及进程 ID ,接着得到系统进程的快照句柄,再根据得到的 ID 到快照句柄中进行遍历,找到对应的PROCESSENTRY32勾的进程信息变量,而应用程序名是该结构的 szExeFile 成员值。(1)运用 HWND hwnd=GetForegroundWindow()得至前台打开的窗口句柄,运用 GetWindowThreadProcessId( ); 得到应用进程 ID 。代码如下:HWND hwnd=GetForegrou

8、ndWindow(); / 得到窗口句柄。DWORD dwProcessID;GetWindowThreadProcessId(hwnd, &dwProcessID ); / 得到进程 ID(2)得到系统进程的快照句柄,Windows操作系统为所有保存在系统中的进程线程的当前状态制作了一个只读副本,通过WIN32 API 函数 CreateToolhelp32Snapshot() 获取这个句柄。/ 创建系统进程快照句柄HANDLE hSnapshot =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);(3)快照的每一个信息是一个 PROCESSE

9、NTR幽勾的进程信息变量,运用 Process32First(); Process32Next() 对这个快照进行遍历查找。 通过进程结构中成员 th32ParentProcessID 与ID 的对比,查找到对应的进程结构变量,成员 szExeFile 代表应用程序名。PROCESSENTRY32 pe;定义一个/进程结构变量Process32First(hSnapshot, &pe); / 先搜索系统中第一个进程的信息/ 对系统中的所有进程进行枚举,并保存应用程序名到szFile 中。Char sz;/ 保存应用程序名。doif(pe.th32ParentProcessID=dwProces

10、sID)strcpy(sz);break; while (Process32Next(hSnapshot, &pe);4、自动关闭游戏娱乐应用程序在第三大步得到了学生机打开的应用程序名,保存在字符变量 szFile 中,在第二步通过与服务器通信得到可以打开的应用程序集合, 保存在字符串变量str 中, 如果学生打开的应用程序不在这个集合里,则关闭应用进程。char *p;p=strstr(szFile,s);if(!p) / 传送到服务器。见第二步。/关闭当前应用进程。(见下面的分析)终止进程的方法如下 :由于终止的进程在当前进程之外,先通过OpenProcess() 与第三步得到的进程ID

11、得到进程句柄。HANDLE hProcess = NULL;hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessID);然后通过该句柄终止进程。if (hProcess)TerminateProcess(hProcess,0);5、监控的实现使用 SetTime() 添加一个记时器对象,将时间间隔设置为100000,即10秒,每隔10秒向应用程序发送 WM_TIMER息。UINT_PTR iTimerID ;iTimerID = SetTimer(NULL,0,100000,NULL) ;响应时钟消息在以下位置添加。 实现应用程序

12、名的判断、 传送给服务器、非课堂应用自动关闭等功能。while(GetMessage(&msg,NULL,0,0)switch(msg.message)case WM_TIMER:If(int(msg.wParam)=iTimerID)/ 各程序的功能实现参阅前面的分析6、自启动的实现建立一个自启动程序。 并将前面建立的 cli 执行文件复制到本文件。在本文中, 先得到自身程序的路径, 然后在注册表中增加一个的启动项。 即: 修改注册表, 增加一个“ load ”项 ,将客户端监控程序设置为 load 项的值。char Self;#define key“ Software MicrosoftWindowsNTCurrentVersionWindows/ 得到自身程序路径GetModule (NULL, SelfFile, MAX_PATH);strcat(SelfFile,cli.exe);HKEY hKey;/ 打开注册表键,不存在则创建它longlRet=RegCreateKeyEx(HKEY_CURRENT_USER,key,0,NULL,REG_OP TION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);/ 修改注册表键值,没有则创建它lRet=RegSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论