首页> 中国专利> 用现有内容生成用于执行任务的活动内容向导可执行文件

用现有内容生成用于执行任务的活动内容向导可执行文件

摘要

提供了一种将现有内容文件转换成活动内容向导可执行文件的计算机实现的方法,以及用于完成该过程的系统和工具。在该方法中,将现有内容文件转换成活动内容向导模式的对应文件。访问对应于现有内容文件所对应的应用程序的一个或多个窗口中找到的用户界面元素的用户界面元素数据库,以检索涉及活动内容向导模式的对应文件中所引用的用户界面元素的信息。然后,从活动内容向导模式的对应文件以及所检索的涉及用户界面元素的信息中创建活动内容向导文件。

著录项

  • 公开/公告号CN1821956A

    专利类型发明专利

  • 公开/公告日2006-08-23

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200610005442.0

  • 发明设计人 A·巴拉;

    申请日2006-01-17

  • 分类号G06F9/44(20060101);G06F17/30(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人张政权

  • 地址 美国华盛顿州

  • 入库时间 2023-12-17 17:38:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-06-17

    专利权的转移 IPC(主分类):G06F9/44 变更前: 变更后: 登记生效日:20150528 申请日:20060117

    专利申请权、专利权的转移

  • 2010-06-02

    授权

    授权

  • 2008-03-19

    实质审查的生效

    实质审查的生效

  • 2006-08-23

    公开

    公开

说明书

相关申请的交叉引用

本申请参考以下共同提交和转让的待决专利申请:2003年1月7日提交的名为“ACTIVE CONTENT WIZARD:EXECUTION OF TASKS AND STRUCTUREDCONTENT(活动内容向导:任务和结构化内容的执行)”的美国专利申请第10/337,745号,该申请在2004年7月8日公开,公开号为US 2004/0130572 A1;2004年7月8日提交的名为“AUTOMATIC TEXT GENERATION(自动文本生成)”的美国专利申请第10/887,058号,该申请在2005年2月10日公开,公开号为US2005/0033713 A1;2004年9月14日提交的名为“ACTIVE CONTENT WIZARDTESTING(活动内容向导测试)”的美国专利第10/940,479号;2004年7月8日提交的名为“IMPORTATION OF AUTOMATICALLY GENERATED CONTENT(自动生成内容的导入)”的美国专利申请第10/887,543号,该申请在2004年12月16日公开,公开号为US 2004/0255270 A1;2004年7月8日提交的,名为“AUTOMATIC IMAGE CAPTURE FOR GENERATING CONTENT(用于生成内容的自动图像捕捉)”的美国专利申请第10/887,414号,该申请在2004年12月9日公开,公开号为US 2004/0250214 A1;2005年2月17日提交的,名为“DISCOVERABILITY OF TASKS USING ACTIVE CONTENT WIZARDS ANDHELP FILES-THE WHAT CAN I DO NOW?FEATURE(使用活动内容向导和帮助文件的任务可发现性-我现在能做什么?特征)”的美国专利申请第11/059,737号,所有这些申请都通过整体引用结合于此。

技术领域

本发明涉及生成诸如帮助内容等内容。更具体地,本发明涉及使用诸如帮助文件等现有内容来生成活动内容向导(ACW)可执行文件的方法。

背景技术

图形用户界面(GUI)是一种广泛使用的接口机制。GUI能很好地用于定位任务(例如,重定矩形的大小)、视件修改器任务(例如,使某样东西成为无法形容的蓝色阴影)或选择任务(例如,这是我希望旋转的上百张图片之一)。GUI也能很好地用于对快速单步特征的迅速访问。应用程序的GUI是从功能角度组织(例如,组织成菜单、工具条等)而非从面向任务的角度组织(例如,按照诸如“使得我的计算机对黑客安全”等用户希望完成的更高级任务组织)的有用工具箱。

然而,GUI也对用户提出了许多问题。使用工具箱类推,用户很难在工具箱中找出工具,或领会如何使用该工具来完成由多个步骤组成的任务。由单个单词、微小按钮以及迫使进入不透明层次的选项卡描述的界面并不有助于人们考虑其任务的方式。GUI要求用户分解任务,以确定哪些任务对完成该任务是必需的。这一要求导致复杂性。除复杂性之外,也需花费时间来组装GUI元素(即,菜单点击、对话框点击等)。即使对于专家用户,这也可能是低效和耗时的。

用于解决GUI问题的一种现有的机制是编写的帮助过程。帮助过程通常采用帮助文档、PSS(产品支持服务)KB(知识库)文章以及新闻组张贴的形式,这将填补顾客需求和GUI问题之间的间隙。它们类似于与工具箱一起供给的手册,并具有许多益处。作为示例,这些益处包括:

1)从技术上而言,即使对于非技术作者,它们也相对易于创作;

2)它们易于在服务器上更新,因此连接的用户能够容易地访问新内容;以及

3)它们教导GUI,由此使用户能够控制解决问题。

然而,帮助文档、PSS KB文章以及新闻组具有其自己的问题集。作为示例,这些问题包括:

1)复杂任务要求用户一方的大量处理。用户需要完成从每一步骤中所述的到GUI的映射。这会导致由于跳过步骤、不正确或不恰当的描述或无序的描述而引起的出错。

2)故障诊断程序甚至是过程帮助文档通常包括在帮助主题内创建复杂分支的状态信息,使得主题变得冗长且难以阅读和由最终用户处理。可能缺少工具条,且可能需要在可以采取下一步之前打开工具条。故障诊断程序通常询问关于状态的问题,该问题在最好的情况下也是令人受挫的(因为故障诊断程序应当能够自己找出回答),而在最坏情况下无法由非专家来回答。

3)存在上百万个文档,且搜索回答涉及从何处开始搜索以及如何从返回的上千个结果中选出最佳搜索结果的两个问题。

4)没有共享的创作结构。新闻组张贴、KB文章、故障诊断程序以及过程帮助文档都具有不同的结构和创作策略,而它们都解决相似的问题。

5)对于用户,简直很难阅读逐步的文本,然后可视地搜索UI以找出描述的元素并对于该元素采取所描述的动作。

用于解决GUI问题的另一现有机制是向导。向导被创建来解决GUI以及编写的帮助过程的弱点。现在有上千种向导,且这些向导可以在制作的几乎每一软件产品中找到。这是由于向导解决了当前现有的基于文本的帮助和协助未解决的实际需求。它们允许用户以面向任务的方式访问功能,并可自动组装GUI或工具。向导允许程序管理员和开发者具有用于解决顾客任务的手段。它们类似于困境中的专家,引领用户逐步通过任务成功所需的步骤。某些向导帮助顾客设置系统(例如,设置向导),某些向导包括具有特征的内容并帮助顾客创建内容(例如,通讯向导或PowerPoint的自动内容向导),而某些向导帮助顾客诊断和解决问题(例如,故障诊断程序)。

向导向用户提供了许多益处。向导的某些益处是:

1)向导可具体化“任务”的概念。用户通常清楚向导在帮助他们完成什么。采用逐步的页面,用户能够容易地做出选择,且在良好设计的向导的情况下,通常降低了用户在视觉上被淹没的发生率。

2)向导可自动组装软件的底层特征并与其交互,且包括顾客做出选择所需的信息或专业知识。这节省了用户在执行任务时的时间。

3)向导可自动生成内容,并可通过创建文本和规划布局来节省用户时间。

4)向导也是询问问题、获得响应和分支到最相关的下一问题或特征的良好手段。

然而,向导也具有其自己的问题集。这些问题中的某一些包括,人们试图完成的任务要比用于完成这些任务的向导多。向导和IUI(引导式用户界面)不教导用户如何使用底层GUI,且通常在向导完成时,用户不确定下一步去往何处。创作向导的成本仍是高的,且要求具有技术专业知识的人(例如,软件开发者)来创作向导。

此外,所有这些类型的内容都遭受又一问题。执行任何给定任务所需的步骤可能基于其上执行该任务的计算机的配置而改变。例如,改变计算机上的背景显示(或“墙纸”)可能要求用户执行不同的步骤,取决于用户计算机的操作系统。实际上,甚至操作系统的版本号不同,所需的步骤都可能不同。类似地,步骤可以根据计算机的网络配置(例如,根据计算机是在网络域上还是在工作组中)而不同。这要求用户在编写的内容中创作相当复杂的分支逻辑。

由此,创作描述要由用户采取的过程的所有这些类型的内容通常是易于出错的。相当容易错过一些步骤、不正确地描述步骤、或丢失对长UI操纵序列中当前正在描述什么步骤的跟踪。然而,这一编写的过程帮助内容是极其常见的。这一帮助内容通常与产品一起提供,为产品支持团队提供在线帮助内容,以及公司内的过程通常以此方式编制文档以用于特定的商业过程。由此,该类信息难以创作且通常包含错误。

另外,最终用户通常必须遵循已创作的步骤。可能难以阅读逐步的文档,然后搜索UI以找出所描述的特定控件元素,并然后对该控件元素采取正确的动作。已发现许多用户认为简单地扫描文本的第一或前二个步骤,然后尽力确定接着需要启动哪些UI元素是一种负担,几乎不能回头参考所编写的文本步骤。还发现比起阅读单词、在头脑中将单词转换成图片、然后找出对应的UI控件元素,人眼能够更容易地找出和识别图片。然而,在过去,这正是所完成的,因为作者必须艰苦地对每一步骤获得屏幕截图、剪裁图像、然后将它们粘贴到文档中正确的位置,以能够具有对要采取的动作的任何类型的可视描述。

活动内容向导(ACW)通过允许作者以相对的简易性生成特定的步骤及其描述解决了这些问题。作者只需与用户界面交互,同时记录组件记录作者的动作。这允许为大量的情况容易地创建ACW。ACW一般包括一种或另一种形式的代码,以与用户界面交互,本质上扮演让用户直接到达用户界面的帮助主题。由此,尽管ACW与用户界面交互,ACW也向用户提供了关于交互的描述。在回放期间,ACW可允许用户与用户界面交互来输入特定的信息,诸如文件名等。

如所提到的,当今的GUI应用程序通常是与让用户知道如何使用该GUI来执行任务的多个过程帮助主题一起提供的。给定用户可能需要帮助的大量任务,有大量过程帮助文件或文档、PSS KB文章等,它们被编写以帮助软件程序的用户。它们中的许多对于ACW是非常好的候选者。然而,将这些主题重写为ACW是不经济的,尤其是当如在Windows或Office中那样存在上千个主题的时候。

本发明对上述的一个或多个问题提供了解决方案,和/或提供了优于现有技术的其它优点。

发明内容

提供了一种将现有内容文件转换成活动内容向导可执行文件的计算机实现的方法,以及用于完成这一过程的系统和工具。在该方法中,将现有的内容文件转换成活动内容向导模式中的对应内容文件。访问对应于现有内容文件所对应的应用程序的一个或多个窗口中找到的用户界面元素的用户界面元素数据库,以检索涉及活动内容向导模式中的对应内容文件引用的用户界面元素的信息。然后,从活动内容向导模式中的对应内容文件以及检索的涉及用户界面元素的信息中创建活动内容向导。

在阅读以下详细描述并审阅附图之后,可以清楚表征本发明的实施例的其它特征和益处。

附图说明

图1是其中可使用本发明的一个示例性环境的框图。

图2是示出ACW创作系统的组件的框图。

图3是示出图2中所示的系统的操作的流程图。

图4是用于任务记录组件的控件的示意图。

图5是示出依照本发明的一个实施例将现有帮助内容转换成ACW可执行格式的方法的流程图。

图6是示出依照本发明的一个实施例的转换系统的框图。

图7是用于窗口记录组件的控件的示意图。

图8-10是示出图7的窗口记录组件的操作的屏幕截图。

具体实施方式

本发明包括用于将现有过程帮助主题、KB文章和类似的内容文档转换成活动内容向导(ACW)脚本的方法和工具集。在更详细描述本发明之前,将讨论其中可使用本发明的一个示例性环境。

I.示例性环境

图1示出了适合在其中实现本发明的计算系统环境100的一个示例。计算系统环境100仅为合适的计算环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。

本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适用于本发明的众所周知的计算系统、环境和/或配置包括但不限于:个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。

本发明可以在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。

参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。

计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。

系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。

计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CD ROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。

上文讨论并在图1示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。

用户可以通过输入设备,如键盘162、麦克风163和定位设备161(如鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,它们通过输出外围接口195连接。

计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有相对于计算机110所描述的元件。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。

当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,它通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,而非局限,图1示出远程应用程序185驻留在远程计算机180中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。

II.通用ACW创作系统

ACW格式、生成方法和执行方法的示例可以在先前引用的2004年7月8日提交的名为Active Content Wizard:Execution of Tasks and Structured Content(活动内容向导:任务和结构化内容的执行)的美国专利申请中找到,该申请的公开号为US 2004/0130572A1。为更好地理解ACW和ACW创作,参考图2-4提供了ACW创作系统的描述。

图2是示出依照一个示例实施例的ACW创作系统200的组件的框图。图2也示出系统200具有记录器207和自动文本生成器203。记录器207包括记录组件210、挂钩组件212和用户界面(UI)自动化组件214。文本生成器203包括文本数据库(或数据存储)220以及文本生成组件230。系统200与用户界面205交互。作者201可以配置系统200的组件以自动记录对应于在用户界面205的控件上执行的动作的图像,且文本生成器203自动生成描述那些动作的文本235。作者201也可编辑自动生成的文本235或在编辑器240上从头开始生成文本以获得描述任务(或UI控件动作)的最终文本245。最终文本245也可说明性地包括其中嵌入的图像。现在将更详细地描述图2中的多个组件。

在一个实施例中,用户界面205是具有允许用户采取动作来执行任务的控件的常规图形用户界面。用户界面205说明性地在图1所示的显示设备191上显示。这一类型的图形用户界面(GUI)是广泛使用的接口机制。

在一个实施例中,记录组件210是允许作者201或另一用户在用户界面上执行任务,并通过捕捉任务中的每一步骤的图像来记录任务的应用程序。如在下文中更详细地描述的,当作者201在用户界面205上执行与任务相关联的步骤时,记录组件210记录关于作者在用户界面205上所交互的控件和窗口的信息。该信息可任选地被提供给文本生成器203以自动生成诸如帮助文档等文档中的文本。也可采用用户对文本的手动生成。

记录组件210通过挂钩212和用户界面(UI)自动化组件214与用户界面205交互。这些组件可与记录组件210分离,或在某些实施例中,这些组件可以与记录组件210是一个整体。

在一个实施例中,挂钩组件212是操作系统中由计算机使用的模块或组件。例如,当为鼠标点击设置挂钩时,指示鼠标点击的信息(诸如消息)被转发到使用该信息的挂钩组件212处,且在记录组件210记录了其相关联的控件标识信息和图像之后,为计算机中注册接收鼠标点击的其它组件回放该信息。因此,一般而言,挂钩组件212担当操作系统和目标应用程序之间的缓冲区。挂钩组件212可以被配置成查找基本上任何输入动作,诸如所接收的信号的类型,如单击、双击、右键或左键点击、键盘动作、触敏屏幕输入等。一旦表示动作的信息和指示动作的屏幕截图图像被记录组件210记录,表示鼠标点击(或记录的任何动作)的信息然后由挂钩组件212向应用程序回放。其一个原因是用户可在记录第一个动作之前采取第二个动作。第二个动作有可能使用户界面状态改变,且由此导致对第一个动作的不正确记录。例如,如果记录的动作是点击菜单项,则点击将使得菜单项消失。因此,在鼠标点击被传递到应用程序之前捕捉了图像。通过使用第一个鼠标消息并一旦记录完成就回放它,确保第一个动作会被正确地记录。

也应当注意,由挂钩组件212执行的功能(即,监听鼠标点击并回放它们)说明性地在单独的线程上执行。这确保所有用户界面动作(例如,鼠标点击、键盘动作等)将被正确地记录,且不丢失任一个地回放。此外,挂钩组件212的记录和回放机制可覆盖操作系统内隐含的任何超时特征。如果操作系统的超时时间段太短,则这是必要的,以允许对动作的正确记录和对指示动作的图像的捕捉。例如,捕捉图像可花费大约300-400ms,甚至如果捕捉整个桌面,可能花费多达1秒。由此,覆盖超时且在多个线程上操作是有帮助的。

用户界面自动化组件214说明性地是被配置成解释由作者或用户通过用户界面205执行的总体任务的原子步骤的计算机程序。在一个实施例中,用户界面自动化组件214是使用雷蒙德市的微软公司的微软用户界面自动化(Microsoft UserInterface Automation)实现的GUI自动化模块。该模块提供了访问关于可视用户界面的信息以及在编程上与可视用户界面交互的编程方法。然而,取决于系统设置,用户界面自动化组件214可以使用能够在编程上导航图形用户界面并检测(以及可任选地在编程上导航GUI来实现和执行)用户界面上的命令的任何应用程序来实现。

由此,用户界面自动化组件214检测与由作者205(或另一用户)按任务顺序在用户界面205上执行的期望任务相关联的每一步骤。例如,当任务要求用户点击GUI上的按钮来显示新菜单或窗口时,用户界面自动化组件214确定哪一控件位于用户界面205上鼠标光标的位置处,以及其大小和父窗口。记录组件210使用来自挂钩组件212的信息(例如,控件的类型、名称和状态)来记录用于执行该步骤的控件的名称和属性。该信息从用户界面自动化组件214和挂钩组件212提供给记录组件210,使得记录组件210可记录控件标识信息以及由作者用于执行该步骤的按钮或控件的图像。获得图像在下文参考图3更详细地描述。

文本生成组件230是被配置成生成描述在记录过程中所执行或实现的动作的自然语言文本的程序或模块。文本生成组件230使用由记录组件210所记录的图像和其它信息来搜索数据库220,并从文本数据库220中选择对应于所记录的步骤的正确模板或条目。

文本数据库220说明性地是可由文本生成器230搜索的数据库或其它信息存储系统。文本数据库220包含涉及用户界面205上可用的控件的信息。该信息可包括例如控件的名称、控件的类型、在控件上执行的动作、以及作为自然语言语句的动作的文本描述。

在某些实施例中,以多种语言提供了条目的文本描述。当以多种语言提供文本描述时,向每一条目提供允许选择正确的语言的语言标识符。

然而,取决于系统需求,可在文本数据库220中提供其它信息。在一个实施例中,文本数据库220中的某些条目具有涉及由按序执行的多个控件例示的两个或多个动作的信息。当多个控件上的多个动作由文本数据库220中的单个条目表示时,条目的文本包含在两个控件上执行的动作的自然语言描述作为单个语句。通过将两个命令的描述组合为单个语句,提高了最终文本文档的可读性。

在一个实施例中,文本数据库220是以可扩展标记语言(XML)来编写的。每一条目的数据可被储存为一系列子条目,其中条目的每一子条目引用标识任务所需的个别信息。然而,可使用其它格式来储存数据。

在一个实施例中,文本生成组件230在文本数据库220中搜索条目时查找所记录的两个或多个动作。可这样做以提供更流畅的文本文档。例如,良好的过程文档通常将一个以上步骤组合成单个语句,作为对可读性的改进。如果文本生成组件230标识了文本数据库220中匹配所记录的信息的两个或多个条目,则文本生成组件230可使用任何已知的方法,诸如通过基于对每一条目的评分并选择具有最高得分的条目来消除条目的歧义,来确定选择数据库中的哪一条目。

依照一个实施例,基于在用户界面上启动的控件的类型以及所执行的动作,文本生成组件230在文本数据库220中搜索匹配所执行的控件类型和动作的条目。一旦在文本数据库220中标识了匹配,文本生成组件230从文本数据库220中获取动作的相关联自然语言描述,并将其作为语句指令放置在所生成的文本文档235中。在一个替换实施例中,文本生成组件220也可基于由UI自动化模块214提供的信息生成文本文档的可执行版本。

当从文本数据库220中选择文本描述时,文本生成组件也可查看控件的状态。这在控件是复选框或可展开或可折叠树时是重要的。在这一情况下,仅仅点击框可能不足以描述动作,因为不论期望的结果是什么,控件上的动作都是相同的。因此,在这些情况下,控件的新状态将影响所选择的文本。例如,如果控件是复选框,且它要被取消选择,则所匹配的文本将基于该控件的新状态加上该控件的名称。

文本编辑器240是被配置成纠正、改变自动生成的文本235或向其添加信息或文本的编辑器。取决于由文本生成器230生成的所得文本,以及由作者执行的动作,可能有必要编辑文本以进一步增强其可理解性。因此,文本编辑器240接收所生成的文本235,并允许作者201编辑所生成的文本。

例如,由于语法上的必要性或由于所记录的步骤之一需要用户动作,且系统在记录它时未请求对用户动作的描述,则可能需要文本编辑。在这一情况下(当需要用户输入时),在执行依照一个实施例要记录的任务时,文本生成器203仅为作者在文本中提供空格,以提供用户在该步骤应当做什么的指令/描述。

例如,假定由用户执行且由记录组件记录的任务是改变计算机屏幕上的背景镶嵌。这要求用户为该背景选择图案。因此,由文本数据库为所记录的改变背景的用户动作所返回的文本可以是“Please select[insert description of action]”(请选择[插入动作描述],其中作者必须编辑该文本以使其成为“Please select the desiredbackground from the list”(请从列表中选择期望的背景)。同样在编辑阶段,如果在记录任务之前未提供总任务的描述,作者201可提供对总体任务的描述。一旦编辑了文本,最终文本245可从创作工具200输出,且储存在允许最终文本由用户在期望时检索的适当的存储模式中。

图3是依照一个示例实施例更详细示出系统200如何操作的流程图。首先,作者201启动记录组件210。这是由图3中的框400指示的。为此,作者201只需启动诸如图4中所示的控件402等控件。记录按钮404可以由作者201启动,以开始记录。停止按钮406被启动以停止记录。如下文详细描述的,作者201可在文本编辑期间在文本编辑器240中插入用户动作的描述。为此,用户启动按钮408。类似地,如下文所描述的,作者201可编辑自动生成的文本。这可以通过启动图4中的文本按钮410来完成。另外,在某些实施例中,可提供额外的按钮以允许用户设置值。这允许在例如在运行时可能要求用户向编辑框键入文本的情况下生成正确的文本。当然,也可使用其它或不同的控件。

再次参考图3,一旦作者201启动了记录组件210,系统只需等待用户在用户界面205上采取动作。注意,图2示出用户是作者201,但是用户也可以是不同的用户。

一旦用户在用户界面205上采取了动作(诸如通过操纵用户界面上的控件元素),挂钩组件212接收指示该用户动作的消息或其它信号。如上所述,对于挂钩组件212,挂钩组件212使用该消息,并将其放置在队列中用于记录。用户在UI 205上采取动作由图3中的框412指示。

记录组件210然后从UI自动化组件214接收控件标识信息。这是由图3中的框414指示的。在一个说明性实施例中,UI自动化组件214向记录组件210提供允许记录组件210记录显示屏幕上表示或对应于用户在用户界面205上采取的动作的控件标识符的多个信息项。在一个说明性实施例中,这些信息项是显示屏幕上用户所启动或操纵的控件元素的位置、该控件元素的边界矩形或大小、以及包含该控件元素的父窗口。在示例性实施例中,控件的图像不用于回放。它仅被记录以使其能够被作者理解。

记录组件210然后获取指示与用户界面205相关联且对应于或反映用户采取的动作的屏幕截图的实际图像信息。这是由图3中的框416指示的。

为执行该步骤,记录组件210可完成多项事情来增强系统的操作。例如,记录组件210可确定记录比仅仅由用户操纵的控件元素更多的实际图像信息(或实际屏幕截图)是有帮助的。例如,如果当前在由用户操纵的显示器上存在一个以上相似的控件元素,则这是真实的。例如,假定用户点击了用户界面上的“OK按钮”。然而,此时在显示屏幕上有一个以上“OK按钮”。因此,为在各“OK按钮”之间进行区分,记录组件210可不仅获取由用户操纵的特定“OK按钮”的实际屏幕截图信息,还可获取围绕该“OK按钮”的期望数量的像素的实际屏幕截图信息。这提供了比仅包含该控件本身的图像更多上下文的图像。

类似地,记录组件210也可记录包含该控件元素的整个父窗口的屏幕截图图像。当然,这包含大量的额外上下文,这些上下文可用于具体地标识用户操纵的控件元素。

为确定是否需要由记录组件210记录额外的上下文,记录组件210可使用各种各样的技术中的任一种来做出这一确定。例如,记录组件210可采用标识用于记录的上下文量的试探法。试探法可以基于所操纵的控件元素的大小和形状、所操纵的控件元素的特定功能、控件元素的类型(例如,复选框、文本框、树视图)、控件元素在屏幕上的位置(例如,如果控件元素在左上角,则记录组件210可取控件元素的右下部分的更多像素),或者试探法可以仅仅反映要在控件元素周围取用的固定数量的像素,而无论它位于何处以及该控件元素执行什么功能。

记录组件210可使用任何已知的技术来获取实际屏幕截图图像。例如,在大多数操作系统中,存在允许应用程序或其它计算组件获取当前正显示的屏幕的任何部分的位图屏幕截图的发布的应用程序编程接口(API)。因此,在一个说明性实施例中,一旦记录组件210知道了它所期望的屏幕截图图像信息的坐标,以及该控件元素的上下文信息量和可任选的父窗口,则它只需做出API调用来获取该信息。

获取了控件标识信息之后,记录组件210记录该信息以供稍后使用。取决于如何使用该信息,记录组件210可使用标准图像操纵API来压缩该图像或重定该图像的大小。这减少了所需的存储器以及最终文档的大小。这是由图3中的框418指示的。当然,也可以注意到,此时,记录组件210可记录由UI自动化组件214提供的其它信息。例如,UI自动化组件214说明性地向记录组件210提供控件名、控件类型、在控件上执行的动作、所执行的操纵的类型(诸如鼠标点击、鼠标滚轮旋转、键盘按键、触摸垫输入等)。该信息都可由记录组件210记录。

依照一个示例实施例,文本生成组件230结合文本数据库220一起自动生成与所捕捉的图像和控件标识信息相关联,且与用户在用户界面205上采取的动作相关联的文本。在使用这些项的实施例中,记录组件210将所捕捉的信息(诸如点击类型、控件类型、控件名等)发送到文本生成组件230。这是由图3中的可任选框420指示的。自动生成的文本说明性地提供了对应于用户界面205的每一用于操纵的逐步指令的编写的过程,以执行要求用户界面205的多个操纵的总体任务。

为生成该文本,文本生成组件230可使用任何合适的方法。在一个说明性方法中,文本生成组件230在文本数据存储220中搜索对应于从记录组件210接收的信息的条目。例如,文本数据存储220可说明性地是包含包括由用户在用户界面205上操纵的控件或其它项的类型、动作类型以及对应于该动作的文本的多个条目的XML数据库。当然,可使用其它数据存储方法来实现数据存储220,且数据存储220可也包含额外或不同的信息。

例如,假定从记录组件210接收到的信息指示用户点击(或调用)了“OK按钮”。则文本生成组件230在文本数据存储220中搜索匹配这一类型的动作的条目。一旦找到匹配,文本生成组件230从文本数据存储220中的该条目中检索描述该类型的动作的文本。例如,文本可以简单地为“点击OK”。

在任何情况下,文本生成组件230说明性地且可任选地自动生成描述用户在用户界面205上采取的且由记录组件210记录的动作的文本。这是由图3中的框422指示的。

所生成的文本由图2中的框235指示。在一个说明性实施例中,由记录组件210记录的图像自动嵌入在生成的文本235中,或至少与所生成的文本235相关联,使得它们可在稍后的过程中彼此结合地取回和显示。

下一步,由记录组件210记录的图像数据和可任选地自动生成的文本被提供给编辑器组件240。由记录组件210记录的图像和自动生成的文本说明性地在编辑器240处的显示屏幕上显示,使得作者201可生成对应于这些图像的文本。对图像以及可任选地由生成组件230生成的文本的显示由图3中的框424指示。

一旦被显示,作者然后可如所需地输入文本或修改文本,以获得对由用户在用户界面205上执行的步骤的完整描述。使用文本编辑器240修改或生成对应于图像的文本由图3中的框436指示。然后保存具有嵌入的图像的最终文本245,如由图3中的可任选框438所指示的。然而,不必在所有实施例中都在文本中嵌入图像。例如,创作系统可仅用于向作者显示所捕捉的图像,其中作者生成对采取的步骤以及对其捕捉的图像的书写的描述。

III.使用现有内容来生成ACW可执行文件

如上所述,给定上千个可用的预先存在的帮助文件或文档、PSS KB文章和其它帮助内容,使用上述方法来为其每一个个别地创作对应的ACW是劳动密集型的。本发明的方法、系统和工具提供了用于将这上千个预先存在的帮助内容文件或文档转换成ACW的机制。在某些情况下,转换可产生完全且准确地反映对应的原始帮助内容文件的步骤或指令的ACW。在其它情况下,转换产生基本上完整和准确的ACW,采用上述创作工具,该ACW可被编辑来完成该过程。例如,如果本发明提供了转换过程中80%的准确度,则所得的ACW可以被编辑以用比从头开始创作同一ACW所需的少得多的时间来达到完全的准确度。

现在参考图5,所示是从现有内容文件创建ACW的方法500。图6示出了可用于实现该方法或可用于执行ACW创建过程的某些或全部的系统550。首先,如图5的框502所示,该方法包括将现有内容文件(图6中的552)转换成ACW模式格式(图6中的556)的步骤。这可用在一个或多个步骤中使用映射、样式表和/或其它技术来执行转换的转换组件554来完成。

在某些实施例中,活动内容向导以XML格式储存,诸如作为微软辅助标记语言(MAML)的一部分的XML格式。也可将其它XML格式用于ACW模式。由于许多帮助文件和其它类似的内容是使用HTML或XML格式来创建的,因此该步骤可包括将现有内容文件从HTML模式转换成ACW XML模式,或从非ACWXML模式转换成ACW XML模式。即使传统帮助内容文件是其它格式的,通常也很容易将它们首先转换成HTML格式,作为多步骤转换过程的一部分。

如果现有内容格式是XML,则转换步骤可使用XSLT样式表,或可定义映射或程序来变换该内容。样式表取决于由源应用程序使用的XML模式。

如果现有格式是HTML,则更难编写转换,因为HTML是基于样式的格式,且不提供MAML格式中所需的模式信息。然而,可使用若干试探法来帮助变换。尽管这些试探法取决于内容的格式,但是它们往往能够合理良好地工作-在Microsoft Windows/Microsoft Office HTML帮助的情况下,它们的工作达85%-90%的准确度,因为帮助内容往往是结构非常良好的。对于大多数应用程序,帮助内容是使用严格的样式原则来编写的。例如,在Windows和Office帮助中,编号列表与过程帮助主题相关。可用于Windows和Office帮助的变换过程的某些试探法的一个示例包括:

1.标题元素对应于MAML或其它ACW XML中的Title元素。

2.编号列表对应于MAML或其它ACW XML中的taskProcedure元素。

3.编号列表中的每一项对应于过程中的一个步骤。

4.出现在UI上的文本由HTML中的<b>标签指示。在Office XP中,它们是由<b class="ui">标签来指示的。

5.如果在标签的任一侧查看3个单词,当看到逗号或分号时停止,并扫描如“click(点击)”、“double-click(双击)”、“select(选择)”、“unselect(取消选择)”、“check(复选)”等单词或短语,可确定这些是对要在菜单项上执行的动作的很好的指示。类似地,如“menu item(菜单项)”、“button(按钮)”、“tab(标签)”等单词或短语给出了对UI元素的类型的良好指示。

6.对于在查找形式为<动作,UI上的文本,UI元素类型>的三元组的步骤中的<b>标签。这些然后将被变换成每一步骤的动作。(MAML或ACWXML模式中的ActionRefs)

7.在过程末端的项目符号列表往往表示注解。

8.嵌套的编号列表对应于子任务。

尽管这些试探法无法以100%的准确度工作,但是它们仍能够进行大多数到ACW XML格式的变换,且只需从作者那里对ACW进行修改而非重写。

HTML内容文件到ACW XML模式或格式的多步骤转换的一个示例提供如下:

HTML格式文件的示例:<HTML DIR="LTR"><HEAD><META NAME="MS-IT-LOC"CONTENT="Mouse"><META NAME="MS.LOCALE"CONTENT="EN-US"><SCRIPT LANGUAGE="JScript"SRC="MS-ITS:ntshared.chm::/shared.js"></SCRIPT><META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=Windows-1252"><META HTTP-EQUIV="MSThemeCompatible"CONTENT="Yes"><TITLE>Reverse your mouse buttons</TITLE><META NAME="MS-HAID"CONTENT="a_win_reverse_mouse_buttons"><LINK REL="stylesheet"MEDIA="screen"TYPE="text/css"HREF="MS-ITS:ntshared.chm::/coUA.css"><LINK REL="stylesheet"MEDIA="print"TYPE="text/css"HREF="MS-ITS:ntshared.chm::/coUAprint.css"></HEAD><BODY><DIV CLASS="Uabrand"><SPAN CLASS="WebOnly"><IMGSRC="MS-ITS:ntdef.chm::/Uabrand.gif"CLASS="Uabrand"ALT="Microsoft Windowsgraphic"></SPAN></DIV><P CLASS="PROCLABEL"><A NAME="win_reverse_mouse_buttons">To reverse your mouse buttons</A></P><OL><LI>Open<A ID="shortcut"HREF="EXEC=,rundll32.exe,shell32.dll,Control_RunDLL main.cplCHM=ntshared.chm FILE=alt_url_windows_component.htm">Mouse</A>in Control Panel.</LI><LI>On the<B>Buttons</B>tab,under<B>Button configuration</B>,select the<B>Switchprimary and secondary buttons</B>check box to make the right button the primary mouse button.Clear the check box if you want the left button to be the primary mouse button.</LI></OL><P CLASS="note">Notes</P><UL><LI><NOLOC><SPAN CLASS="smart"ID="mousecp">XOX</SPAN></NOLOC></LI><LI>Be aware that if you switch the mouse buttons using the left mouse button,you will have touse the right mouse button to switch them back.</LI></UL><P><A ID="relTopics"HREF="CHM=mouse.chm;folderop.chmMETA=a_win_mouse_buttons;a_win_double_click;a_folderopt_change_mouse_clicks">RelatedTopics</A></P></BODY></HTML>

在该转换的第一步中,HTML文档被转换成XHTML,其结果如下所示:<?xml version="1.0"encoding="utf-8"?><html dir="LTR">

<head>

  <meta content="Mouse"name="MS-IT-LOC"/>

  <meta content="EN-US"name="MS.LOCALE"/>

  <script language="JScript"src="MS-ITS:ntshared.chm::/shared.js"/>

  <meta contant="text/html;charset=Windows-1252"http-equiv="Content-Type"/>

  <meta content="Yes"http-equiv="MSThemeCompatible"/>

  <title>Reverse your mouse buttons</title>

  <meta content="a_win_reverse_mouse_buttons"name="MS-HAID"/>

  <link href="MS-ITS:ntshared.chm::/coUA.css"rel="stylesheet"type="text/css"media="screen"/>

  <link href="MS-ITS:ntshared.chm::/coUAprint.css"rel="styleshaat"type="text/css"media="print"/>

</head>

<body>

  <div class="Uabrand">

    <span class="WebOnly">

      <img alt="Microsoft Windows graphic"src="MS-ITS:ntdef.chm::/Uabrand.gif"class="Uabrand"/>

    </span>

</div>

<p class="PROCLABEL"/>

<a name="win_reverse_mouse_buttons">To reverse your mouse buttons</a>

<ol>

  <li>Open<a href="EXEC=,rundll32.exe,shell32.dll,Control_RunDLL main.cplCHM=ntshared.chm FILE=alt_url_windows_component.htm"id="shortcut">Mouse</a>in ControlPanel.</li>

  <li>On the<b>Buttons</b>tab,under<b>Button configuration</b>,select the<b>Switchprimary and secondary buttons</b>check box to make the right button the primary mouse button.Clear the check box if you want the left button to be the primary mouse button.</li>

  </ol>

  <p class="note"/>Notes<ul><li><noloc><span id="mousecp"class="smart">XOX</span></noIoc></li><li>Be aware that if you switch the mouse buttons usingthe left mouse button,you will have to use the right mouse button to switch themback.</li></ul><p/><a href="CHM=mouse.chm;folderop.chmMETA=a_win_mouse_buttons;a_win_double_click;a_folderopt_change_mouse_clicks"id="relTopics">Related Topics</a></body></html>

然后解析器将其转换成ACW所使用的XML格式,其结果如下所示:<?xml version="1.0"encoding="utf-8"?><task contentType="ACWProcedure"xmlns="http://schemas.microsoft.com/maml/2003/5">

<title>Reverse your mouse buttons</title>

<procedure>

  <step>

    <shortcut>

      <para>Open<doTask>Mouse</doTask>in Control Panel.</para>

    </shortcut>

  </step>

  <step>

    <uiActions>

      <actionRef Id="0"/>

      <actionRef Id="1"/>

      <description>

        <para>On the<ui>Buttons</ui>tab,under Button configuration,select the<ui>Switch primary and secondary buttons</ui>check boxto make the right button the primarymouse button.Clear the check box if you want the left button to be the primary mousebutton.</para>

       </description>

     </uiActions>

   </step>

 </procedure>

 <taskExecutionBlock>

   <uiAction Id="2">

     <actionHints>

       <actionType>SELECT</actionType>

       <uiText>Switch primary and secondary buttons</uiText>

       <uiElement>CH ECKBOX</uiElement>

     </actionHints>

   </uiAction>

   <uiAction Id="1">

     <actionHints>

       <actionType>NONE</actionType>

       <uiText>Buttons</uiText>

       <uiElement>TAB</uiElement>

     </actionHints>

   </uiAction>

 </taskExecutionBlock></task>

在最后一步中,由ACW脚本生成器562(图6中所示)用ACW脚本的真实属性来替换taskExecution块,以产生ACW脚本文件564。这在下文中参考图5的框504和506所示的步骤进一步讨论,但是对于本示例,结果首先如下所示:<?xml version="1.0"encoding="utf-8"?><task contentType="ACWProcedure"xmlns="http://schemas.microsoft.com/maml/2003/5">

<title>Reverse your mouse buttons</title>

<procedure>

  <step>

    <shortcut>

      <para>Open<doTask>Mouse</doTask>in Control Panel.</para>

    </shortcut>

  </step>

<step>

  <uiActions>

    <actionRef Id="0"/>

    <actionRef Id="1"/>

    <description>

      <para>On the<ui>Buttons</ui>tab,under Button configuration,select the<ui>Switch primary and secondary buttons</ui>check box to make the right button the primarymouse button.Clear the check box if you want the left button to be the primary mousebutton.</para>

      </description>

    </uiActions>

  </step>

</procedure>

  <taskExecutionBlock>

  <uiAction id="1"hasNoSideEffects="false">

    <uiActionDescription/>

    <executionMethods>

      <controlPatternAction>

        <controlPattern>lnvoke</controlPattern>

      </controlPatternAction>

      <mouseAction>

        <clickType>Click</clickType>

        <mouseButton>Left</mouseButton>

        <mouseKey>None</mouseKey>

      </mouseAction>

    </executionMethods>

    <uiElement>

      <properties>

        <persistentldisLocalelndependent="false">PageTab:Buttons:1:SysTabControl32:Switch</persistentld>

          <name>Buttons</name>

          <className>SvsTabControl32</className>

          <controlType>B:Tabltem</controlType>

          <numChildren>0</numChildren>

          <providerld>I:Invoke</providerld>

          <elementld/>

          <boundingRectangle>{X=121,Y=183,Width=48,Height=18}</boundingRectangle>

        </properties>

        <topLevelWindow>

          <windowProperties>

            <persistentld isLocaleIndependent="false">Dialog:0:#32770:OK</persistentld>

            <name>Mouse Properties</name>

            <className>#32770</className>

            <controlType>B:Custom</controlType>

            <numChildren>5</numChildren>

            <providerld/>

            <elementld/>

            <boundingRectangle>{X=113,Y=174,Width=398,Height=423}</boundingRectange>

            <isModal>False</isModal>

            <moduleName/>

          </windowProperties>

          <processName>rundll32</processName>

        </topLevelWindow>

        <pathToTopLevelWindow>

          <elementAncestor>

            <persistentldisLocalelndependent="false">Window:rundll32:SysTabControl32:012320</persistentld>

            <name>Unlabeled element</name>

            <className>SysTabControl32</className>

            <controlType>B:Custom</controlType>

          <numChildren>1</numChildren>

          <providerld/>

          <elementld/>

          <boundingRectangle>{X=119,Y=181,Width=386,Height=380}</boundingRectangle>

        </elementAncestor>

        <elementAncestor>

          <persistentldisLocalelndependent="false">PageTabList:0:SysTabControl32</persistentld>

          <name>Unlabeled element</name>

          <className>SysTabControl32</className>

          <controlType>B:Tab</controlType>

          <numChildren>5</numChildren>

          <providerld/>

          <elementld/>

          <boundingRectangle>{X=119,Y=181,Width=386,Height=380}</boundingRectangle>

        </elementAncestor>

      </pathToTopLevelWindow>

    </uiElement>

</uiAction>

<uiAction id="0"hasNoSideEffects="false">

  <uiActionDescription/>

  <executionMethods>

    <mouseAction>

      <clickType>Click</clickType>

      <mouseButton>Left</mouseButton>

      <mouseKey>None</mouseKey>

    </mouseAction>

  </executionMethods>

  <uiElement>

    <properties>

      <persistentld isLocalelndependent="false">CheckButton:Switch primary andsecondarybuttons:O:Button:Alt+s:Check</persistentld>

      <name>Switch primary and secondary buttons</name>

      <className>Button</className>

      <controlType>B:CheckBox</controlType>

      <numChildren>0</numChildren>

      <providerld>I:Toggle</providerld>

      <elementld/>

    <boundingRectangle>{X=143,Y=231,Width=209,Height=23}</boundingRectangle>

  </properties>

  <topLevelWindow>

    <windowProperties>

      <persistentld isLocalelndependent="false">Dialog:0:#32770:OK</persistentld>

      <name>Mouse Properties</name>

      <className>#32770</className>

      <controlType>B:Custom</controlType>

      <numChildren>5</numChildren>

      <providerld/>

      <elementld/>

    <boundingRectangle>{X=113,Y=174,Width=398,Height=423}</boundingRectangle>

      <isModal>False</isModal>

      <moduleName/>

    </windowProperties>

    <processName>rundll32</processName>

  </topLevelWindow>

  <pathToTopLevelWindow>

    <elementAncestor>

            <persistentldisLocalelndependent="false">Window:rundll32:#32770:0</persistentld>

            <name>Buttons</name>

            <className>#32770</className>

            <controlType>B:Custom</controlType>

            <numChildren>1</numChildren>

            <providerld/>

            <elementld/>

            <boundingRectangle>{X=123,Y=203,Width=378,Height=354}</boundingRectangle>

          </elementAncestor>

          <elementAncestor>

            <persistentldisLocalelndependent="false">PropertyPage:0:#32770</persistentld>

            <name>Buttons</name>

            <className>#32770</className>

            <controlType>B:Custom</controlType>

            <numChildren>15</numChildren>

            <providerld />

            <elementld />

            <boundingRectangle>{X=123,Y=203,Width=378,Height=354}</boundingRectangle>

          </elementAncestor>

          <elementAncestor>

            <persistentldisLocalelndependent="false">Window:rundll32:Button:0101</persistentld>

            <name>Switch primary and secondary buttons</name>

            <className>Button</className>

            <controlType>B:Custom</controlType>

            <numChildren>1</numChildren>

            <providerld/>

            <elementld/>

            <boundingRectangle>{X=143,Y=231,Width=209,Height=23}</boundingRectangle>

          </elementAncestor>

        </pathToTopLevelWindow>

      </uiElement>

    </uiAction>

  </taskExecutionBlock></task>

现在回头参考图5,在框504示出记录应用程序的UI以创建UI元素文件或数据库的步骤。为实现该步骤,使用窗口记录器工具558(图6和7中示出)。窗口记录器558类似于图4所示的任务记录器402工作,不同之处在于它使用了同一方法和功能来记录UI 205的窗口的每一元素。窗口记录器558的用户可打开特定应用程序中的每一相关对话框/窗口,并在该窗口上运行窗口记录器。窗口记录器允许用户选择窗口的一部分或整个窗口。如下文更详细地示出的,窗口记录器558将关于窗口上找到的所有元素的信息储存在文件或数据库560中。除回放所需的属性之外,窗口记录器工具还捕捉每一元素的图像。

在图7所示的一个示例实施例中,窗口记录器558包括用于启动或停止记录过程的“开始/停止”按钮580。该记录过程例如通过定义UI上要记录的窗口来开始。也包括“摄取(Zap)”按钮582,当被点击时,它开始记录由用户建立的窗口中的UI元素(及其属性)的过程。这在下文更详细地示出。为停止记录过程,再次点击“开始/停止”按钮580。为清除窗口记录器存储器的内容,包括了“清除”按钮584。为保存从窗口记录的信息,点击“保存”按钮586。

现在参考图8-10的屏幕截图,示出了使用窗口记录器工具558来记录整个窗口。在图8中,示出了控制面板UI 600以及记录器工具558。一旦点击了“开始/停止”按钮580,当用户移动指针(使用诸如鼠标等输入设备)时,在屏幕上画出如图9所示的矩形。该矩形对应于其中定位光标的窗口602。在所示的示例中,窗口602对应于控制面板的列出的UI元素和其它内容。

一旦定义了窗口602,用户点击摄取键582(或按下诸如<Ctrl><Shift><z>等一个或多个定义的热键),且记录器558记录该特定窗口602中的每一元素。在记录窗口的每一元素时,记录器558也提取对该窗口的每一元素感兴趣的属性,以及该元素的图像或图形。

接着参考图10,所示是记录的或摄取的窗口604,显示该窗口,向用户示出从窗口602记录的每一元素。窗口604的元素可以使用按钮586来保存。该过程花费极少的时间,且对应用程序的每一相关窗口重复,从而将所有控件储存在文件或数据库564中。

回头参考图5和6,在图5的框506处示出从所转换的文件556(步骤502)并从UI元素文件或数据库560(在步骤504创建)创建ACW脚本的最终步骤。这添加了运行时引擎回放该脚本所需的属性。使用所转换的脚本556和来自使用窗口记录器工具558记录的应用程序的所有相关UI元素(来自文件或数据库560),第三工具将组合该信息以创建ACW脚本564。这被示出为图6中的ACW脚本生成器562。该工具顺序地打开每一转换的脚本。然后对转换的脚本556中的每一actionRef元素,即(动作,文本,菜单元素)对,它在文件/数据库560中查找对应的匹配。在存在一个以上匹配的情况下,该工具向用户示出对应的匹配的图像,并让作者指定正确的那一个。转换的ACW脚本然后可被测试以确认转换,并在需要时由作者编辑。

尽管参考具体实施例描述了本发明,然而本领域的技术人员可以认识到,可以在不脱离本发明的精神和范围的前提下在形式和细节上做出改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号