摘 要
本文以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/11121.html