無紙化考試系統防止考生作弊的實現措施_第1頁
已閱讀1頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、sunshinesunshine無紙化考試系統防止考生作弊的實現措施無紙化考試系統防止考生作弊的實現措施田民格(三明學院數學與計算機科學系福建三明365004)摘要:摘要:無紙化考試系統防止考生作弊是無紙化考試系統要解決的首要問題。本文介紹了無紙化考試系統考生可用的作弊手段和防止考生作弊的具體方法,用API調用技術、注冊表技術、攔截消息技術、回調技術、鉤子技術實現了這些方法并給出詳細的Delphi實現代碼。關鍵詞:關鍵詞:無紙化考試系統

2、作弊消息回調鉤子中圖分類號:中圖分類號:TP316TP316文獻標識碼:文獻標識碼:A文章編號:文章編號:16734343(2007)0404560416734343(2007)04045604TheTheSolutionSolutiontotoPreventPreventExamineeExamineefromfromCheatingCheatingofofPaperlessPaperlessExaminationExaminatio

3、nSystemSystemTianMinge(MathComputerScienceDepartmentSanmingCollegeSanming365004China)Abstract:Abstract:Preventexamineefromcheatingisoneofchiefproblemstosolveofnopaperexaminationsystem.Thispaperintroducesthemeasureofhowto

4、practisingfraudfexamineethesolutiontopreventexamineefrompractisingfraud.ThenintroducesthesolutionbyusingthetechnologyofcallingAPIregistryheadingoffofthemessagestransferredtowindowbyWindowscallbacklowlevelkeyboardhookinde

5、tailwithDelphi.KeyKeywds:wds:NoPaperExaminationSystemPractisingfraudMessageCallbackhook無紙化考試防止考生作弊是無紙化考試系統要解決的一個很重要的問題[1][2],也是到目前為止國內多數著名無紙化考試系統尚未能完全解決的難題(筆者從事無紙化考試系統軟件開發(fā)8年有余,見過考試系統幾十個,如新為、永道、杰佛、無憂等軟件公司的考試系統,都尚未完全解決此難題)

6、。因為Windows是一個多任務的操作系統,在任一時刻都允許運行多個程序,同樣,在無紙化考試過程中,要作弊的考生必然會通過各種途徑(如CtrlAltDel)切換到其它應用程序并搜索到與考試相關的信息,使考試系統變成了“拷貝”系統,為此,如何使多任務的操作系統暫時失去多任務的功能(屏蔽CtrlAltDel熱鍵等問題)是解決防止考生作弊的關鍵。本文使用Delphi綜合應用了API調用技術、注冊表技術、攔截消息技術、回調技術、鉤子技術[3]等

7、很好地實現了三層CS模式[4]下的無紙化考試系統[5]中防止考生作弊問題。若采用BS模式,則更難解決這些問題,且存在考題很難兼容Wd格式等問題。1考試系統中防止考生作弊的問題與原理考試系統中防止考生作弊的問題與原理考試系統中要防止考生作弊,按難度的不同,依次要解決四個方面的問題,即窗體的控制問題、任務欄的控制問題、熱鍵的屏蔽問題、某些應用程序的智能提示信息。1.11.1窗體的控制問題窗體的控制問題最簡單的作弊手段就是直接通過鍵盤或鼠標切

8、換到其它應用程序查看答案。這是多數無紙化考試系統都能解決的問題,就是將答題窗體最大化并保持在所有窗體的最上面,包括蓋住任務欄,且窗體沒有最小化和還原按鈕,這樣,考生即使切換到其它窗體,也被答題窗體蓋住而無法看到答案。但Delphi頂層技術存在一個漏洞,Delphi窗體在最大化時可用鼠標拖動標題欄移動窗體,而Delphi窗體沒有禁止窗體移動的屬性可用。解決的辦法是攔截窗體感應消息WM_NCHITTEST和窗體位置改變消息WM_Window

9、PosChanging,前者將標題欄消息調包成窗體客戶區(qū)消息,后sunshinesunshine使任務欄窗體及其各區(qū)域子窗體無效且隱藏。通過調用API函數FindWindow獲得任務欄窗體的句柄,通過調用API函數FindWindowEx獲得任務欄各區(qū)域子窗體的句柄,具體代碼如下。procedureGetHles(varW:TrayWnd)begin得到TrayBar窗體句柄w[0]:=FindWindow(Shell_TrayWndn

10、il)得到開始按鈕子窗體句柄w[1]:=FindWindowEx(w[0]0Buttonnil)得到應用程序切換區(qū)子窗體句柄w[2]:=FindWindowEx(w[0]0ReBarWindow32nil)得到任務欄通知區(qū)子窗體句柄w[3]:=FindWindowEx(w[0]0TrayNotifyWndnil)得到任務欄時鐘子窗體句柄w[4]:=FindWindowEx(w[0]0TrayNotifyWndnil)w[4]:=Find

11、WindowEx(w[4]0TrayClockWClassnil)end通過調用API函數EnableWindow使任務欄窗體及各區(qū)域子窗體無效,通過調用API函數ShowWindow使任務欄窗體及各區(qū)域子窗體隱藏,具體代碼如下。procedureTrayShowEnable(W:TrayWndH:boolean=false)Vari:Integerbeginfi:=0to4dobeginEnableWindow(w[i]H)ShowW

12、indow(w[i]IfThen(HSW_SHOWSW_HIDE))endend4熱鍵的屏蔽問題熱鍵的屏蔽問題要屏蔽各種熱鍵,首先定義按鍵消息結構和相關變量。typetagKBDLLHOOKSTRUCT=packedrecdvkCode:DWD虛擬鍵值scanCode:DWD掃描碼值flags:DWDtime:DWD消息時間戳dwExtraInfo:DWD和消息相關的擴展信息endKBDLLHOOKSTRUCT=tagKBDLLHOOK

13、STRUCTPKBDLLHOOKSTRUCT=^KBDLLHOOKSTRUCTconstWH_KEYBOARD_LL=13constLLKHF_ALTDOWN=$20VarhhkLowLevelKybd:HHOOK其次定義低級鍵盤鉤子的回調函數,在回調函數中過濾按鍵消息(WIN、AltTab、AltEsc、CtrlEsc等)。FunctionLowLevelKeyboardProc(nCode:IntegerWParam:WPARAML

14、Param:LPARAM):LRESULTstdcallVarfEatKeystroke:BOOLp:PKBDLLHOOKSTRUCTBeginResult:=0fEatKeystroke:=FALSEp:=PKBDLLHOOKSTRUCT(lParam)if(nCode=HC_ACTION)thenbegin攔截按鍵消息并測試是否是組合鍵casewParamofWM_KEYDOWNWM_SYSKEYDOWNWM_KEYUPWM_SYS

15、KEYUP:fEatKeystroke:=((p.vkCode=vk_LWin)(P.vkCode=vk_RWin))((p.vkCode=VK_TAB)((p.flagsLLKHF_ALTDOWN)0))((p.vkCode=VK_ESCAPE)(GetKeyState(VK_CONTROL)0thenResult:=CallNextHookEx(0nCodewParamlParam)End最后是窗體顯示時設置鉤子調用的回調函數,關閉

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論