摘 要本文以Delphi
作為開發平台
給出了網絡監控軟件中的兩種
屏幕抓圖技術的設計方法和步驟
介紹了教師在計算機機房內教學時
如何監控學生計算機顯示器上的畫面
以保證教學的質量和效果
引言 隨著網絡技術的飛速發展
計算機網絡在各高等院校教學中的使用已非常普遍
但是
我們發現一個問題
在教學的過程中
由於老師是面對著學生
而背對著學生計算機的顯示器
不能隨時查看學生計算機顯示器上的內容
所以
有的學生在教學中偷玩游戲
影響了教學的質量和效果
因此
設計一款網絡監控軟件
監控學生計算機
十分必要
為了實現這一目的
此系統應具有以下功能
(
)教師用機可以循環顯示學生計算機的顯示器上的畫面
(
)教師用機可以動態顯示某一學生計算機的顯示器上的畫面
(
)教師用機可以對學生用計算機發出警告信息和控制信息
(
)學生用計算機開機自動運行服務端監控程序
(
)為了防止學生用計算機的服務端監控程序
被學生發現用Ctrl+Alt+Del關閉
在Ctrl+Alt+Del對話框中必須隱藏程序
同時
應該隱藏程序在任務欄的按鈕
本文結合應用實踐
重點向大家介紹在Delphi
中可以采用的兩種實現屏幕抓圖技術的操作方法
程序實現 (
)抓取屏幕圖像的難點有兩個
一是如何奪取屏幕的句柄
二是知道屏幕句柄後如何獲取屏幕的圖像
Borland公司的設計人員用畫布(Tcanvas)對象封裝了Windows的大部分圖形輸出功能
可以通過它以更直觀的方式和Windows的屏幕打交道
而不必關心令人頭疼的Windows API函數
具體程序如下
procedure TForm
Timer
Timer(Sender
TObject)
//抓取屏幕
並保存到Image控件中
var
Fullscreen
Tbitmap
FullscreenCanvas
TCanvas
dc
HDC
begin
Fullscreen
=TBitmap
Create
//創建一個BITMAP來存放圖象
Fullscreen
Width
=screen
width
Fullscreen
Height
=screen
Height
DC
=GetDC(
)
//取得屏幕的DC
參數
指的是屏幕
FullscreenCanvas
=TCanvas
Create
//創建一個CANVAS對象
FullscreenCanvas
Handle
=DC
Fullscreen
Canvas
CopyRect(Rect(
screen
Width
screen
Height)
fullscreenCanvas
Rect(
Screen
Width
Screen
Height))
//把整個屏幕復制到BITMAP中
FullscreenCanvas
Free
//釋放CANVAS對象
ReleaseDC(
DC)
//釋放DC
//*******************************
image
picture
Bitmap
=fullscreen
//拷貝下的圖象賦給IMAGE對象
image
Width
=fullscreen
Width
image
Height
=fullscreen
Height
fullscreen
free
//釋放bitmap
form
WindowState
=wsNormal
//復原窗口狀態
form
show
//顯示窗口
messagebeep(
)
//BEEP叫一聲
報告圖象已經截取好了
end
(
)Delphi的第三方控件ScreenCapture
它是一個很好的免費的截圖控件
可以輕松抓取任意大小(全屏當然行)
屏幕的任何位置
還可以設置所截圖像的形狀
以及用何種模式截圖
下面介紹的是用TcmWindow模式截圖
使用非常簡單
使用效果可以與著名的抓圖軟件SnagIt
媲美
procedure TForm
BtnStartClick(Sender
TObject)
begin
ScreenCapture
start
//開始截圖
end
//當截取屏幕成功時
此事件發生
procedure TForm
ScreenCapture
Capture(Sender
TObject
Bitmap
TBitmap)
begin
//調整滾動窗口的大小以適應截獲圖像的大小
Scrollbox
HorzScrollBar
Range
= Image
width
Scrollbox
VertScrollBar
Range
= Image
height
end
procedure TForm
FormCreate(Sender
TObject)
begin
//載入entntacp
dll文件
BtnStart
enabled
= ScreenCapture
dllavailable
//顯示版本信息
caption
=
屏幕抓圖軟件
+ ScreenCapture
version
end
//當沒有足夠的內存支持截取屏幕時
此事件發生
procedure TForm
ScreenCapture
Error(Sender
TObject)
begin
MessageDlg(
屏幕截取時發生一個錯誤!請關閉其他應用程序以獲得更多內存資源
mtError
[mbOK]
)
end
//當用戶按
Esc
鍵
即取消屏幕截取時
此事件發生
procedure TForm
ScreenCapture
UserCancelled(Sender
TObject)
begin
MessageDlg(
用戶取消屏幕截取
mtInformation
[mbOK]
)
end
運行程序
效果如圖
和圖
所示
圖
運行效果圖
圖
抓取圖像後的效果圖
結論 通過對以上兩種程序代碼的調試運行
使用第三方控件的方法更易於設計實現
文中的程序代碼全部在Win
和Delphi
環境下調試通過
From:http://tw.wingwit.com/Article/program/Delphi/201311/24754.html