新聞中心
隨著網(wǎng)絡技術(shù)的飛速發(fā)展,計算機網(wǎng)絡在各高等院校教學中的使用已非常普遍,但是,我們發(fā)現(xiàn)一個問題,在教學的過程中,由于老師是面對著學生,而背對著學生計算機的顯示器,不能隨時查看學生計算機顯示器上的內(nèi)容,所以,有的學生在教學中偷玩游戲,影響了教學的質(zhì)量和效果,因此,設(shè)計一款網(wǎng)絡監(jiān)控軟件,監(jiān)控學生計算機,十分必要。本文以Delphi7.0作為開發(fā)平臺,給出了網(wǎng)絡監(jiān)控軟件中的兩種屏幕抓圖技術(shù)的設(shè)計方法和步驟。為了實現(xiàn)這一目的,此系統(tǒng)應具有以下功能:

網(wǎng)站建設(shè)、做網(wǎng)站,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上1000家企業(yè)提供了,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)絡營銷等服務!設(shè)計與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。
(1)教師用機可以循環(huán)顯示學生計算機的顯示器上的畫面。
(2)教師用機可以動態(tài)顯示某一學生計算機的顯示器上的畫面。
(3)教師用機可以對學生用計算機發(fā)出警告信息和控制信息。
(4)學生用計算機開機自動運行服務端監(jiān)控程序。
(5)為了防止學生用計算機的服務端監(jiān)控程序,被學生發(fā)現(xiàn)用Ctrl+Alt+Del關(guān)閉,在Ctrl+Alt+Del對話框中必須隱藏程序。同時,應該隱藏程序在任務欄的按鈕。
本文結(jié)合應用實踐,重點向大家介紹在Delphi7.0中可以采用的兩種實現(xiàn)屏幕抓圖技術(shù)的操作方法。
程序?qū)崿F(xiàn)
(1)抓取屏幕圖像的難點有兩個:一是如何奪取屏幕的句柄,二是知道屏幕句柄后如何獲取屏幕的圖像。Borland公司的設(shè)計人員用畫布(Tcanvas)對象封裝了Windows的大部分圖形輸出功能,可以通過它以更直觀的方式和Windows的屏幕打交道,而不必關(guān)心令人頭疼的Windows API函數(shù)。具體程序如下:
- procedure TForm1.Timer1Timer(Sender:TObject);//抓取屏幕,并保存到Image控件中
- var
- Fullscreen:Tbitmap;
- FullscreenCanvas:TCanvas;
- dc:HDC;
- begin
- Fullscreen:=TBitmap.Create;
- //創(chuàng)建一個BITMAP來存放圖象
- Fullscreen.Width:=screen.width;
- Fullscreen.Height:=screen.Height;
- DC:=GetDC(0); //取得屏幕的DC,參數(shù)0指的是屏幕
- FullscreenCanvas:=TCanvas.Create;
- //創(chuàng)建一個CANVAS對象
- FullscreenCanvas.Handle:=DC;
- Fullscreen.Canvas.CopyRect(Rect(0,0,screen.Width,screen.Height),
- fullscreenCanvas,Rect(0,0,Screen.Width,Screen.Height));
- //把整個屏幕復制到BITMAP中
- FullscreenCanvas.Free;
- //釋放CANVAS對象
- ReleaseDC(0,DC); //釋放DC
- //*******************************
- image1.picture.Bitmap:=fullscreen; //拷貝下的圖象賦給IMAGE對象
- image1.Width:=fullscreen.Width;
- image1.Height:=fullscreen.Height;
- fullscreen.free; //釋放bitmap
- form1.WindowState:=wsNormal; //復原窗口狀態(tài)
- form1.show; //顯示窗口
- messagebeep(1); //BEEP叫一聲,報告圖象已經(jīng)截取好了。
- end;
(2)Delphi的第三方控件ScreenCapture,它是一個很好的免費的截圖控件,可以輕松抓取任意大小(全屏當然行)、屏幕的任何位置,還可以設(shè)置所截圖像的形狀、以及用何種模式截圖。下面介紹的是用TcmWindow模式截圖,使用非常簡單,使用效果可以與著名的抓圖軟件SnagIt32媲美。
- procedure TForm1.BtnStartClick(Sender:TObject);
- begin
- ScreenCapture1.start; //開始截圖
- end;
- //當截取屏幕成功時,此事件發(fā)生
- procedure TForm1.ScreenCapture1Capture(Sender:TObject;Bitmap:TBitmap);
- begin
- //調(diào)整滾動窗口的大小以適應截獲圖像的大小
- Scrollbox1.HorzScrollBar.Range:= Image1.width;
- Scrollbox1.VertScrollBar.Range:= Image1.height;
- end;
- procedure TForm1.FormCreate(Sender:TObject);
- begin
- //載入entntacp.dll文件
- BtnStart.enabled:= ScreenCapture1.dllavailable;
- //顯示版本信息
- caption:= '屏幕抓圖軟件' + ScreenCapture1.version;
- end;
- //當沒有足夠的內(nèi)存支持截取屏幕時,此事件發(fā)生
- procedure TForm1.ScreenCapture1Error(Sender:TObject);
- begin
- MessageDlg('屏幕截取時發(fā)生一個錯誤!請關(guān)閉其他應用程序以獲得更多內(nèi)存資源.', mtError,[mbOK],0);
- end;
- //當用戶按“Esc”鍵,即取消屏幕截取時,此事件發(fā)生
- procedure TForm1.ScreenCapture1UserCancelled(Sender:TObject);
- begin
- MessageDlg('用戶取消屏幕截取。',mtInformation,[mbOK],0);
- end;
結(jié)論
通過對以上兩種程序代碼的調(diào)試運行,使用第三方控件的方法更易于設(shè)計實現(xiàn),文中的程序代碼全部在Win2000和Delphi7.0環(huán)境下調(diào)試通過。
新聞標題:基于Delphi的屏幕抓圖技術(shù)的實現(xiàn)
本文來源:http://www.fisionsoft.com.cn/article/djpgppe.html


咨詢
建站咨詢
