摘 要本文以Delphi
作为开发平台
给出了网络监控软件中的两种
屏幕抓图技术的设计方法和步骤
介绍了教师在计算机机房内教学时
如何监控学生计算机显示器上的画面
以保证教学的质量和效果
引言
随着网络技术的飞速发展计算机网络在各高等院校教学中的使用已非常普遍但是我们发现一个问题在教学的过程中由于老师是面对着学生而背对着学生计算机的显示器不能随时查看学生计算机显示器上的内容所以有的学生在教学中偷玩游戏影响了教学的质量和效果因此设计一款网络监控软件监控学生计算机十分必要为了实现这一目的此系统应具有以下功能
()教师用机可以循环显示学生计算机的显示器上的画面
()教师用机可以动态显示某一学生计算机的显示器上的画面
()教师用机可以对学生用计算机发出警告信息和控制信息
()学生用计算机开机自动运行服务端监控程序
()为了防止学生用计算机的服务端监控程序被学生发现用Ctrl+Alt+Del关闭在Ctrl+Alt+Del对话框中必须隐藏程序同时应该隐藏程序在任务栏的按钮
本文结合应用实践重点向大家介绍在Delphi中可以采用的两种实现屏幕抓图技术的操作方法
程序实现
()抓取屏幕图像的难点有两个一是如何夺取屏幕的句柄二是知道屏幕句柄后如何获取屏幕的图像Borland公司的设计人员用画布(Tcanvas)对象封装了Windows的大部分图形输出功能可以通过它以更直观的方式和Windows的屏幕打交道而不必关心令人头疼的Windows API函数具体程序如下
procedure TFormTimerTimer(SenderTObject)//抓取屏幕并保存到Image控件中
var
FullscreenTbitmap
FullscreenCanvasTCanvas
dcHDC
begin
Fullscreen=TBitmapCreate
//创建一个BITMAP来存放图象
FullscreenWidth=screenwidth
FullscreenHeight=screenHeight
DC=GetDC() //取得屏幕的DC参数指的是屏幕
FullscreenCanvas=TCanvasCreate
//创建一个CANVAS对象
FullscreenCanvasHandle=DC
FullscreenCanvasCopyRect(Rect(screenWidthscreenHeight)
fullscreenCanvasRect(ScreenWidthScreenHeight))
//把整个屏幕复制到BITMAP中
FullscreenCanvasFree
//释放CANVAS对象
ReleaseDC(DC) //释放DC
//*******************************
imagepictureBitmap=fullscreen //拷贝下的图象赋给IMAGE对象
imageWidth=fullscreenWidth
imageHeight=fullscreenHeight
fullscreenfree //释放bitmap
formWindowState=wsNormal //复原窗口状态
formshow //显示窗口
messagebeep() //BEEP叫一声报告图象已经截取好了
end
()Delphi的第三方控件ScreenCapture它是一个很好的免费的截图控件可以轻松抓取任意大小(全屏当然行)屏幕的任何位置还可以设置所截图像的形状以及用何种模式截图下面介绍的是用TcmWindow模式截图使用非常简单使用效果可以与着名的抓图软件SnagIt媲美
procedure TFormBtnStartClick(SenderTObject)
begin
ScreenCapturestart //开始截图
end
//当截取屏幕成功时此事件发生
procedure TFormScreenCaptureCapture(SenderTObjectBitmapTBitmap)
begin
//调整滚动窗口的大小以适应截获图像的大小
ScrollboxHorzScrollBarRange= Imagewidth
ScrollboxVertScrollBarRange= Imageheight
end
procedure TFormFormCreate(SenderTObject)
begin
//载入entntacpdll文件
BtnStartenabled= ScreenCapturedllavailable
//显示版本信息
caption= 屏幕抓图软件 + ScreenCaptureversion
end
//当没有足够的内存支持截取屏幕时此事件发生
procedure TFormScreenCaptureError(SenderTObject)
begin
MessageDlg(屏幕截取时发生一个错误!请关闭其他应用程序以获得更多内存资源mtError[mbOK])
end
//当用户按Esc键即取消屏幕截取时此事件发生
procedure TFormScreenCaptureUserCancelled(SenderTObject)
begin
MessageDlg(用户取消屏幕截取mtInformation[mbOK])
end
运行程序效果如图和图所示
图运行效果图
图抓取图像后的效果图
结论
通过对以上两种程序代码的调试运行使用第三方控件的方法更易于设计实现文中的程序代码全部在Win和Delphi环境下调试通过