用于生成内容的自动图像捕捉
发明背景
本发明涉及生成内容,诸如帮助内容。更具体地,本发明涉及指示用户在用户界面上的动作的图像的自动捕捉。
图形用户界面(GUI)是广泛使用的界面机制。GUI适于定位任务(例如,对矩形调整大小)、视觉修改工具任务(例如,对某物加上难以名状的蓝色阴影)或选择任务(例如,这是一百个图片中我想要旋转的一个)。GUI也适于对快速单步特征的迅速访问。应用程序的GUI是从功能角度(例如,组织成菜单、工具栏等)而非面向任务角度(例如,由用户想要进行的高级任务组织,诸如“使我的计算机免受黑客威胁”)组织的有用的工具箱。
然而,GUI也对用户提出了众多问题。使用工具箱类似物,用户难以在箱中找到工具或了解如何使用工具来完成由多个步骤组成的任务。由位于不透明分层的单个词语、小按钮和TAB键描述的界面使其不适于人们思考他们的任务的方式。GUI要求用户分解任务以便确定什么元素是完成任务所必需的。这种要求导致复杂性。除复杂性以外,这花费时间来组装GUI元素(即,菜单点击、对话点击等)。这即使对专家用户而言也是低效且费时的。
解决GUI问题的一个现有机制是书面的帮助程式。帮助程式通常采用帮助文档、PSS(产品支持服务)KB(知识库)文章和新闻组公告的形式,这填补了顾客需求与GUI问题之间的缺口。它们类似于与工具箱一起提供的手册,并具有许多好处。这些好处包括,作为示例:
1)就技术而言,即使对非技术作者,它们也相对易于创作;
2)它们易于在服务器上更新,因此连接的用户能够轻易访问新的内容;以及
3)它们教GUI,从而使用户能够控制解决问题。
然而,帮助文档、PSS KB文章和新闻组有它们自己的问题。这些问题包括,作为示例:
1)复杂任务需要在用户一方上进行大量处理。用户需要进行从每一步骤中描述的事物到GUI的映射。由于步骤被跳过,或被不正确或不充分地描述,或被颠倒地描述,因此这可导致错误。
2)故障诊断程序以及甚至程式性帮助文档,通常包括在帮助主题内创建复杂分支的状态信息,使得主题过长而难以由最终用户阅读和处理。工具栏可能缺少,在可以采取下一步骤之前可能需要被开启。故障诊断程序通常询问关于状态的问题,这从最好的角度也是令人灰心的(因为,故障诊断程序应能够自己找出答案),从最坏的角度则对非专家而言是不能回答的。
3)存在成百万的文档,搜索答案涉及从哪里开始搜索,然后如何从返回的数干结果中挑选最佳搜索结果的问题。
4)不存在共享的创作结构。新闻组公告、KB文章、故障诊断程序和程式性帮助文档皆具有不同的结构和创作策略,然而它们都解决类似的问题。
5)对用户而言,只是难以阅读逐步的文本,然后在视觉上对UI搜索正被描述的元素并对该元素采取所描述的动作。
解决GUI问题的另一现有机制是向导。创建向导来解决GUI和书面的帮助程式的弱点。现在存在数千向导,可在所制造的几乎每个软件产品中找到这些向导。这是因为向导解决了目前现有的基于文本的帮助和协助未能解决的实际需求。它们允许用户以面向任务的方式访问功能,并可自动组装GUI或工具。向导向程序管理员和开发员提供解决顾客任务的手段。这类似于使用户通过任务成功所必需的步骤的工具箱中的专家。某些向导帮助顾客安装系统(例如,安装向导),某些向导包括具有特征的内容,并帮助顾客创建内容(例如,Newsletter向导或PowerPoint的AutoContent向导),某些向导帮助顾客诊断并解决问题(例如,故障诊断程序)。
向导向用户提供众多好处。向导的某些好处在于:
1)向导能够具体化“任务”的概念。用户通常清楚向导在帮助他们完成什么任务。使用逐步的页面,用户易于作出选择,在良好设计的向导的情况中,通常减少了用户在视觉上被淹没的发生率。
2)向导可自动组装并与软件的基础特征交互,且包括顾客作出选择所需的信息或专家意见。这节省了用户执行任务的时间。
3)向导可以通过创建文本和规划布局来自动生成内容并能节省用户时间。
4)向导也是用于询问问题、获得回答和分支到最相关的下一问题或特征的良好手段。
然而,向导也有它们自身的问题。这些问题中的某些包括,人们试图完成的任务多远于存在用于完成任务的向导的任务。向导和IUI(引导性用户界面)不教导用户如何使用基础GUI,且通常当向导完成时,用户不确定下一步做什么。创作向导的成本仍旧高,且要求具有技术专业知识的人员(例如,软件开发员)来创作向导。
因此,创作描述将由用户采取的过程的所有这些类型的内容通常易于产生错误。很容易就缺少步骤、不正确地描述步骤、或在一长串UI操纵中失去当前正描述什么步骤的线索。然而,这种书面程式性帮助内容非常常见。这样的帮助内容通常与产品一起装运,为产品支持组提供在线帮助内容,公司内的程式通常以专用商业过程的方式编写文档。因此,这种类型的信息难以创作且通常包含错误。
此外,最终用户一般遵循已被创作的步骤。难以阅读逐步的文本,然后在UI上搜索正被描述的特定控制元素,然后针对该控制元素采取适当的措施。我们发现众多用户发觉这是那么繁锁以至于他们仅扫视文本的前一或前两个步骤就尽力确定下一步需要启动哪些UI元素,而几乎不回头参考书面的文本步骤。我们还发现,相比阅读单词、在心里将单词转换成图片然后找到相应的UI控制元素,眼睛能更容易地找到和识别图片。然而,在过去,正是进行了前者,其中创作者必须煞费苦心地获得每一步骤的屏幕截图、裁剪图像然后将它们粘贴到文档中的适当位置中,以便拥有任何类型的要采取的措施的视觉描绘。
发明概述
本发明的一个实施例通过提供供创作数千任务(或向导)的容易方式使用的内容组件来解决向导、帮助、知识库文章和故障诊断程序的某些问题,并且或者与GUI集成并教导用户如何使用GUI执行任务,或者代表用户执行任务。在一个特定实施例中,本发明涉及创作活动内容向导(ACW)脚本,以及作为ACW脚本的一部分的文本和图像。
本发明针对用于基于创作者完成用户界面上执行的整体任务的各步骤的动作来自动捕捉图像的系统。为了捕捉图像,创作者启动记录组件。记录组件记录对应于用户在用户界面上的动作的图像。记录组件可将所记录的图像传递给编辑组件,在那里创作者可生成对应于该图像的文本以描述所述动作。如有需要,图像也可嵌在文本中发布。
在一个实施例中,文本生成器自动生成对应于图像的文本。这种文本然后可用于形成文本文档,它向用户提供指令或其它信息。在生成文本文档的过程期间或之后,文本可使用编辑器编辑以增强文档的可理解性。
附图简述
图1是可在其中使用本发明的一个示例环境的框图。
图2是示出本发明的自动图像捕捉和文本生成系统的组件的框图。
图3是示出图2中所示的系统在捕捉与用户动作相关的图像时的操作的流程图。
图4是描绘记录组件210的控件的屏幕截图。
图5是更好地示出其中可使用图像来创作内容的一个实施例的屏幕截图。
图6示出了根据本发明的一个实施例的带有嵌入的图像的最终文本的一个实施例。
说明性实施例的详细描述
本发明设计基于用户在用户界面上的动作自动记录图像。在更详细地描述本发明之前,将讨论可其中能使用本发明的一个示例性环境。
图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,以及从诸如CD ROM或其它光学介质等从移动、非易失性光盘156中读取或向其写入的光盘驱动器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连接至局域网171。当在WAN连网环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机构连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可以存储在远程记忆存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备180上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
图2是示出根据本发明的一个实施例的图像捕捉系统200的组件的框图。图2还示出具有记录器207和可任选自动文本生成器203的系统200。记录器207包括记录组件210、挂钩组件212以及用户界面(UI)自动化组件214。可任选文本生成器203包括文本数据库(或数据存储)220以及文本生成组件230。图像捕捉系统200与用户界面205交互。创作者可配置系统200的组件来自动记录对应于在用户界面205的控件上执行的动作的图像,可任选文本生成器203自动生成描述这些动作的文本235。创作者201也可在编辑器240上编辑自动生成的文本235或从草稿生成文本以获取描述任务(或UI控件动作)的最终文本245。最终文本245也说明性地包括嵌入其中的图像。现在将更详细地描述图2中的多个组件。
在一个实施例中,用户界面205是具有允许用户采取动作来执行任务的控件的常规图形用户界面。用户界面205说明性地显示在图1中所示的显示设备191上。这种类型的图形用户界面(GUI)是广泛使用的界面机制。
记录组件210在一个实施例中是允许创作者201或另一用户在用户界面205上执行任务并通过捕捉任务中每一步骤的图像来记录任务的应用程序。如将在以下更详细地描述的,当创作者201在用户界面205上执行与任务相关联的步骤时,记录组件210记录关于创作者在用户界面205上与什么控件和窗口交互的信息。这种信息可任选地提供给文本生成器230以自动生成诸如帮助文档等文档中的文本。
记录组件210经由挂钩212和用户界面(UI)自动化组件214与用户界面205交互。这些组件可与记录组件210分开,或在某些实施例中,这些组件可与记录组件210成一整体。
在一个实施例中,挂钩组件212是由计算机使用的操作系统内的模块或组件。当例如挂钩被设定供鼠标点击使用时,指示鼠标点击的信息(诸如消息)被转发给挂钩组件212,在那里消费该信息,且当其相关联的图像由记录组件210记录之后,为注册来接收鼠标点击的计算机中的其它组件回放该信息。从而,一般,挂钩组件212用作操作系统和目标应用程序之间的缓冲区。挂钩组件212可被配置成查找基本上任何输入动作,诸如所接收的信号的类型,例如单击、双击、右击或左击、键盘动作、触敏屏输入等。一旦表示动作的信息和指示该动作的屏幕截图由记录组件210记录之后,然后表示鼠标点击(或所记录的任何动作)的信息由挂钩组件212向应用程序回放。对此的一个理由是,用户可在记录第一动作之前采取第二动作。第二动作可使用户界面的状态改变,因此导致对第一动作的不正确记录。例如,如果正在被记录的动作是点击菜单项,该点击将使得菜单项消失。从而,在鼠标点击被传递给应用程序之前捕捉图像。通过消费第一鼠标消息并当一旦完成记录之后对其回放,这确保了第一动作将被适当地记录。
还应注意,由挂钩组件212执行的功能(即,监听鼠标点击并对其回放)被说明性地在分开的线程上执行。这确保了所有用户界面动作(例如,鼠标点击、键盘动作等)将没有遗漏地被适当地记录并回放。此外,挂钩组件212的记录和回放机制可无视操作系统内隐含的任何超时特征。这将是必须的,如果操作系统的超时周期对允许适当记录动作和捕捉指示动作的图像而言过短时。例如,如果正在捕捉整个桌面,捕捉图像将花费300-400ms左右,甚至高达一秒。因此,无视超时并操作在多线程上是有益的。
用户界面自动化组件214说明性地是被配置成为由创作者或用户通过用户界面205执行的整体任务解释原子步骤的计算机程序。在一个实施例中,用户界面自动化组件214是使用华盛顿州雷德蒙市的微软公司提供的微软用户界面自动化(Microsoft User Interface Automation)实现的GUI自动化模块。该模块提供了访问关于可视用户界面的信息并在程序上与可视用户界面交互的程序化方式。然而,取决于系统设置,用户界面自动化组件214可使用能够在程序上导航图形用户界面并检测(和可任选地在程序上导航GUI来执行和运行)用户界面上的命令的任何应用程序来实现。
用户界面自动化组件214因此检测与创作者201(或另一用户)以任务顺序在用户界面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提供的信息生成该文本文档的可执行版本。
当从文本数据库235中选择文字描述时,文本生成组件也可注意控件的状态。这在控件是复选框或是可展开或可折叠的树时是重要的。在这种情况下,仅在框上点击可能不适于描述该动作,因为无论期望的结果如何,控件上的动作都是相同的。因此,在这些情况中,控件的新状态将影响所选择的文本。例如,如果控件是复选框,且它要被取消选定,则所匹配的文本将基于控件的新状态加上控件的名字。
文本编辑器240是被配置成对自动生成的文本235更正、改变或添加信息或文本的编辑器。取决于由文本生成器230生成的结果文本,以及创作者执行的动作,可能有必要编辑文本以进一步增强其可理解性。从而,文本编辑器240接收所生成的文本235,并允许创作者201编辑所生成的文本。
例如,由于语法上的必要性或因为所记录的步骤之一要求用户动作而系统在当其记录时没有要求对用户动作的描述,而需要文本编辑。在这样的情况中(当需要用户输入时),根据一个实施例,在执行将被记录的动作的同时,本生成器235仅在文本中提供空格,以便创作者提供关于用户在此步骤中应做的动作的指令/描述。
例如,假定正由用户执行并由记录组件记录的任务是改变镶在计算机屏幕上的背景。这要求用户为背景选择图案。从而,文本数据库为所记录的改变背景的用户动作而返回的文本可以是“请选择[插入动作的描述]”,其中创作者将必须将文本编辑成“请从列表中选择所需的背景”。同样在编辑阶段期间,如果对整个任务的描述在记录任务之前未被提供,则创作者201可提供对此的描述。一旦文本被编辑之后,最终文本245从创作工具200中输出,并以允许用户在期望时检索最终文本的适当的存储模式存储。
图3是根据本发明的一个实施例,更详细地示出系统200如何操作的流程图。首先,创作者201启动记录组件210。这由图3中的框400指示。为此,创作者201仅启动诸如图4中所示的控件402的控件。Record(记录)按钮410可由创作者201启动以开始记录。启动Stop(停止)按钮406以停止记录。如将在以下描述的,创作者201可在文本编辑期间将对用户动作的描述插入到文本编辑器240中。为此,用户启动按钮408。类似地,如以下描述的,创作者201可编辑自动生成的文本。这可通过启动图4中的Text(文本)按钮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指示。
图5是示出其中所捕捉的图像和可任选的自动生成的文本可在编辑器240处向创作者201显示的一种方式的屏幕截图。图5包括与本发明相关的两个主要部分。第一部分包括文本显示部分426,第二部分包括图像显示部分428。文本显示部分426显示可任选的自动生成的文本235或由创作者201创作的文本。图像显示部分428显示由记录组件210记录的所捕捉的屏幕截图。
在其中自动生成文本的实施例中,该文本在显示部分426中在235处示出,它可由创作者使用编辑器组件240来编辑(其一个屏幕截图在图5中示出)。因此,创作者可加亮显示部分426上显示的动作或其它项中的每一个。与加亮项相关联的图像在窗口部分428中显示。因此,在图5中所示的实施例中,创作者加亮了对应于启动Accessibility Options(可访问性选项)控件的第2号动作,相应的图像在显示部分428中显示。用户然后可按需要输入文本或修改文本,以便获得对由用户在用户界面205处执行的步骤的全部描述。使用文本编辑器240修改或生成对应于图像的文本由图4中的框436示出。
在图5中所示的实施例中,用户已在用户界面205上启动了AccessibilityOption控件430。可见,记录组件210不仅获取了对应于Accessibility Option控件的控制框430,还获取了包含围绕Accessibility Option按钮430的多个像素的更大的上下文框432。上下文框432显示了围绕Accessibility Options控件430的附加上下文,使得它可在屏幕上更容易地定位。
图5还示出记录组件210获取了包含Accessibility Options控件430的父窗口434。从而,创作者可精确地看见用户在用户界面205上操纵哪个控件,以及控件驻留在其父窗口上的何处。这极大地协助了创作者生成或修改描述用户界面上所采取的动作的文本。
可以理解,可按照各种不同方式使用本发明。例如,本发明可用于生成内容(诸如帮助内容),其中所捕捉的图像嵌在文本或帮助文本中。对此的一个示例在图6中示出。可见,过程中的每一步不仅包含描述做什么来完成该步骤的文本,还包含指示将在何处执行该步骤的视觉图像。在此实施例中,其中本发明用于在文本中生成嵌入的图像,最终文本245与所嵌入的图像一起输出。这由图4中的可任选框438指示。
然而,本发明不必用于将图像嵌入到文本中。相反,本发明可仅用于向创作者显示所捕捉的图像,在这些图像中创作者正在生成所采取的步骤的书面描述,且其图像被捕捉。例如,创作者可能正在生成描述修理病毒或将其从计算机移除的过程的文本。创作者可能不希望在该文本中包括嵌入的图像。在这种情况中,图像仅被显示,可任选地,自动生成的图像也向创作者显示,创作者或者可从草稿中生成文本,或者在提供了自动生成的文本的实施例中,创作者可修改自动生成的文本。
在任何情况中,最终文本245将说明性地以内容将最终发布的任何模式创建,或被转换成该模式。这种模式可以是例如Microsoft Assistance(微软辅助)标记语言(MAML)、HTML或某种其它的XML格式。
由此可见,本发明可用于协助创作内容。宏记录组件210监视用户在用户界面205上执行步骤以执行整体任务。当用户执行这些步骤时,记录器记录创作者处理的视觉UI元素。在一个实施例中,这些视觉图像包括正被操纵的控件(可能还有某些附加上下文)和该控件的父窗口两者的屏幕截图。用于执行整体任务的一连串图像然后可用于允许创作者清楚地理解所记录的每一步骤指的是什么以便允许创作者生成对应于每一步骤的清楚且简明的文本。或者,所记录的图像可从创作工具导出,并被包含到文字内容本身内。结果是向最终用户逐步示出当用户自己执行步骤时做什么的图像以及描述每一步骤的文本的内容(诸如帮助主题)。
尽管参考特定实施例描述了本发明,但本领域的技术人员将认识到可对形式和细节进行改变,而不背离本发明的精神和范围。