崔青 石剛 劉淑嫻 王崇國
摘要:本文探討了Windows的交互界面信息,分析了獲取Windows操作系統交互對象的屬性及其調用關系,研究了生成Silverlight的仿真程序。
關鍵詞:對話框;仿真;API函數;交互
中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2019)09-0081-01
0 引言
近年來軟件仿真一直是虛擬化及可視化研究中的一個重要方向。而在Windows操作系統的基礎教學和評估過程中,實踐操作是非常重要的環節,例如對網絡環境的設置或者更改系統屬性參數等等。但是這些操作往往使實驗環境發生改變,而錯誤的系統配置可能導致設備無法正常工作。在學校的機房中通常會在實驗設備上安裝還原卡以保護計算機重啟后自動回到原先的狀態,然而在評估學生實際上機操作掌握情況的時候,這種方法往往不能起到正確的評價效果。研究基于Web仿真的Windows交互式操作界面,可以在實現不改變本機系統配置的情況下,一方面通過瀏覽器實現對操作系統的仿真,另一方面能夠獲取學生操作的過程和結果,很好的解決了評價學生操作能力的問題。
1 Windows的交互界面信息
Windows操作系統的用戶界面,主要有四個部分:(1)桌面,包括菜單、圖標和任務欄;(2)資源管理器;(3)瀏覽器;(4)交互式對話框窗體。
然而要想仿真Windows操作系統是一件非常困難的事,一方面微軟對于Windows系統更新比較快,版本多;另一方面Windows操作系統中與配置相關的內容也比較多,各種對話框及屬性相關性復雜。利用編碼直接實現Windows的交互界面是可以實現的,但這兩方面導致直接采用硬編碼去實現Windows操作系統的工作量太大,而且面對Windows的眾多版本,以及不斷隨著版本的更新必然要重新實現,但可重用的部分相對較少,其代碼的重用性往往很差。
自動化的重建Windows交互界面,是在沒有Windows源代碼的條件下,完全依靠用戶交互操作,獲取Windows交互對話框界面信息。在Web中仿真Windows交互對話框需要得到幾點基本信息:(1)對象的類型:用以根據不同類型創建不同的仿真對象。(2)對象的句柄:這是當前對象在內存中的標識。(3)對象的大小和位置信息:用以還原對象的大小和位置。(4)對象的標題(Caption):用于還原對象,可以在一定范圍內區分對象。
2 獲取Windows操作系統交互對象的屬性及其調用關系
獲取用戶行為并分析對象間調用關系,是整個在Web頁面中還原Windows操作系統交互界面的數據基礎,也是作為實際操作過程中屬性修改的核心部分[1]。那么,如何獲取Windows操作系統交互對象的屬性及其調用關系呢?采用對用戶的交互行為進行跟蹤來獲取用戶操作的對象及其屬性,利用Windows中API函數自動化獲取Windows對話框及其屬性,分析各對象間的調用關系,再利用Web下圖形顯示技術在頁面上動態生成這些對象,進行自動化提取軟件仿真所需要的數據,從而實現在Web環境下對Windows操作系統的交互式對話框仿真系統[2]。
在研發過程中,利用User32.dll的幾個相關API函數來獲取窗口元數據信息。GetDesktopWindow函數首先獲取桌面窗口的句柄,再利用返回與給定窗口有特定關系的窗口句柄函數GetWindow和根據輸入查找窗口對象函數FindWindowEx函數,可以遞歸獲取所有當前狀態下的Windows對象及其包含的控件的句柄,并記錄從屬關系,然后利用獲取窗口標題條的文本函數GetWindowText、獲取對象的類名函數GetClassName、獲取各窗口對象的位置和大小信息函數GetWindowRect等函數獲取窗口對象的元數據。
在Web頁面下仿真Windows交互功能,除了能夠顯示對話框及其子對象外,更重要的是必須能夠在各對話框之間進行導航。實踐中我們采用非手工方式:即在抓取對象時,保存對話框對象間的調用關系。Windows的鉤子(Hook)是Windows用以捕捉自己進程或其它進程發生的事件的較好的方法[3]。通過“鉤掛”可以給指定的Windows事件安裝一個回調函數,通過回調函數可以獲取窗口對象,以捕獲對象的鼠標事件為基礎,建立事件日志,記錄下每次鼠標事件點擊的對象句柄以及顯示的新窗口對象句柄,并保存調用關系,每次獲取對象,就可以得到一個調用關系圖。
3 生成Silverlight的仿真程序
微軟Silverlight是一種融合了微軟的多種技術的Web呈現技術,當前Windows的用戶仍然以IE為主,Silverlight提供了一套基于.Net Framework的開發框架,并通過使用矢量圖層技術,支持任何尺寸圖像的無縫整合,對多數Web開發環境實現了無縫連接[4]。
如果應用在考試系統過程中,由于考生幾乎都是同時開始,并發請求要求較高,動態生成Windows窗口對話框將大大加重服務器的負擔,因此我們沒有采用運行時動態生成對象的方式,而是采用生成對象的Silverlight代碼,再進行局部優化,最后編譯部署運行。這種方案一方面可以提高程序并行效率,保證用戶請求的高速響應;另一方面可以進行調試,添加局部的修飾。自動生成的Silverlight代碼,有些地方并不十分完善,可以通過手工的方式進行修改。比如Windows的有些對話框中會顯示些動態結果,如動畫圖片等。這時就需要手工進行修改,甚至添加新的資源等等。最后將所有生成的窗口對象文件,一同添加到工程中,并對細節進行修改,同時可以進行聯調和測試。
4 結語
本文提出的方法,大大降低了Windows交互界面仿真程序編寫的難度,適用于不同版本的Windows系統,在交互操作仿真效果上完全相似于真實的Windows操作系統,通過更改對象的屬性,直接改變顯示屬性,最終生成的界面元素代碼也可以在其他系統中直接使用。這就為基于Web的Windows考試系統或基于Web的Windows實踐教學系統的開發提供了非常好的基礎,不僅為初學者提供了真實環境的操作仿真平臺,而且能夠獲取學生操作的過程和結果,很好的解決了評價學生操作能力的問題。
參考文獻
[1] 黃聰會,陳靖,龔水清,陳明華.64位Windows ABI虛擬化方法研究[J].計算機科學,2014(1):39-42.
[2] 洪文圳,周勁樺,梁慧娜.開源虛擬化桌面在實驗環境部署中的應用[J].計算機教育,2015(2):94-98.
[3] 王琦,胡濤,賀剛.基于輪詢差異檢測和鉤子捕獲技術的屏幕變化捕捉的研究[J].現代計算機,2013(10):8-12.
[4] 栗少萍.NET平臺耦合Silverlight的圖像系統開發[J].山東農業大學學報(自然科學版),2015(1):106-109.
Abstract:In this paper the information of ?Windows interactive interface is discussed, the attributes and calling relationships of the interactive objects of ?Windows operating system are analyzed, and the simulation program for Silverlight generation is studied.
Key words:dialog box; simulation; API function; interaction