基于Web仿真的Windows交互式操作实践研究

2019-12-13 07:22崔青石刚刘淑娴王崇国
数字技术与应用 2019年9期
关键词:交互仿真对话框

崔青 石刚 刘淑娴 王崇国

摘要:本文探讨了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

猜你喜欢
交互仿真对话框
正常恢复虚拟机
基于图形用户界面的多点触控交互技术综述