获取、处理和发送包含在一个图形用户界面窗口中的数据的装置和方法

文档序号:6412974阅读:138来源:国知局
专利名称:获取、处理和发送包含在一个图形用户界面窗口中的数据的装置和方法
技术领域
本发明一般涉及在图形用户接口(GUI)操作系统(OS)环境中的数据管理领域,尤其涉及从GUI窗口将文本和位图捕获到缓冲区、在GUI窗口中标记文本和从缓冲区将数据发送到输入/输出设备或其它应用程序或实用工具以便进一步处理。
如今大多数的计算机系统用户都在使用运行有某种GUI操作系统的计算机,比如微软公司(Microsoft Corp.,Redmond,Washington)开发的Windows 3.1、Windows 3.11、Windows 95和IBM公司(IBM Corp.,Armonk,New-York)开发的IBM OS/2。这些操作系统能够同时执行很多应用程序,包括线程(也就是多任务)。这些应用程序执行例如字处理、数据库管理和电子表格计算一类的任务。
以上提到的面向GUI的操作系统都是基于窗口这一概念的。窗口是GUI的基本单元,用户是通过一个或多个窗口与应用程序进行交互的。文本和图片(也就是位图)是用户与GUI交互时接触的基本的信息单元。
在多任务操作系统中,应用程序可以交换数据和相互控制。在多数现代操作系统中有多种进程间通讯和数据交换机制,包括共享存储器、剪贴板、应用程序间通讯机制以及数据对象链接和嵌入服务。这些方式共有一个主要的缺点应用程序必须设计并编码为明确地支持这些进程间通讯机制。
这些GUI操作系统中的多数如今都具有某种形式的临时缓冲设施,从而某一窗口的数据可以剪切或复制到一个缓冲区(也就是Windows操作系统中的剪贴板)其后粘贴到其它应用程序。使用这种缓冲区是从一个应用程序获取数据传送到另一个应用程序的一种简便而高效的机制,尤其是应用程序并非设计为相互协同工作时更是这样。这种机制允许来自不同厂家的应用程序不需要了解对方就可以进行数据共享。但是,要使这种机制运作,应用程序必须编写有用户利用临时缓冲区机制(也就是Windows操作系统中的剪贴板)所必需的剪切、复制和粘贴函数。令人遗憾的是,有很多应用程序不具有这种从其窗口获取数据并放入剪贴板的机制。应用程序如终端仿真程序、数据通讯程序(即调制解调器和传真程序)、Internet访问软件等通常不支持从其程序获取数据并将其路由选择到一个目的地的简单方便的机制。
现有技术中为人们所熟知的屏幕捕获程序,提供了一种可以替代剪贴板的捕获窗口数据的方法,但是它们也有其缺点。屏幕捕获程序在显示存储器级别操作。它们允许用户捕获实际可见屏幕上的任何部分而不理会显示的数据的类型。捕获的数据只能存储为位像数据。如果不进行附加的处理,例如光学字符识别(OCR),要截获对应于例如字处理一类软件的屏幕上的文本部分并将捕获数据存储成文本或字串数据(例如ASCII格式)是不可能的。屏幕捕获程序的缺陷就是不能将它们捕获的数据按照数据的原始格式进行存储。
授予Chalas的美国专利第5,392,386号,教导了一种用于为运行在具有剪贴板的GUI计算机系统中的现有应用程序添加功能的系统。该系统监听OS和应用程序之间的通讯并判断何时用户在调用某个附加功能。此系统响应用户命令将捕获的信息发送到剪贴板。
因此我们期望拥有一种用于可以不使用剪贴板就从任何运行在系统中的应用程序获取文本或位图数据、存储在缓冲区并发送到任何其它应用程序或输出设备的系统和方法。
以下,术语“输出设备”将定义为硬件设备、文件、软件应用程序或其它存在于硬件或软件中的任何能够接受数据的插孔。术语“标准图形格式”定义为Windows操作系统支持的任何图形格式。术语“标准文本格式”定义为如今广泛用于个人计算机的ASCII格式。
因此,本发明的一个目的就是提供一种能从属于任意一个应用程序的任何实际的窗口中按照其本来格式(即ASCII格式)捕获文本并将文本存储在一个缓冲区(非剪贴板)中以备稍后使用的系统和方法,由此此任意的应用程序不需要支持应用程序间通讯机制、数据对象链接和嵌入服务或剪贴板操作如剪切、复制和粘贴等。
本发明的另一个目的是提供一种能从属于任意一个应用程序的任何实际的窗口中按照其本来格式捕获位像并将位像存储在一个缓冲区(非剪贴板)中以备稍后使用的系统和方法,由此此任意的应用程序不需要支持应用程序间通讯机制、数据对象链接和嵌入服务或剪贴板操作如剪切、复制和粘贴等。
本发明的另一个目的是提供一种用于在从属于任意一个应用程序的任何实际的窗口上使用一个缓冲区中已存在的文本标记文本的系统和方法。
本发明的另一个目的是提供一种用于将先前存储在一个缓冲区中的文本和位图传送到用户选定的其它应用程序或输出设备的系统。
按照本发明的一个推荐实施例,还提供了一种在一个计算机系统中获取、处理和发送包含在用户选择的窗口的文本和/或位图数据的方法,此方法包括步骤从一个窗口以原始文本和位图格式获取数据、将获取的数据存储在一个数据缓冲区中、处理存储在此数据缓冲区中的数据以便指定其中一部分、将指定的数据发送到用户选择的至少一个输出设备。
此外,获取步骤包括步骤将应用程序EXE模块和关联的动态链接库(DLL)加载到内存、确定用户选择的窗口的一个窗口句柄、使用窗口子类化(windows subclassing)、在用户选择的GUI窗口关联的一个窗口过程上安装至少一个钩(hook)、在至少一个操作系统原始API函数上安装至少一个应用程序编程接口(API)钩、强制用户选择的GUI窗口重绘以使选择的窗口中所有文本和/或位图数据被发送到选择的窗口、过滤数据和用发送到选择的窗口的文本和/或位图数据填充一个文本缓冲区。
填充一个文本缓冲区和过滤数据的步骤包括强制选择的窗口重绘其内容、从原始窗口过程获取控制并传递给位于本发明的DLL中的子类化过程、初始化文本缓冲区为一个已知状态、利用本发明的DLL来捕获并过滤重绘向选择的窗口的文本和/或位图数据、将数据存储在缓冲区中以及将控制返还给原始窗口过程。
捕获步骤包括步骤临时移去至少一个的API钩、从API函数的参数中复制数据到一临时缓冲区以待进一步处理、调用至少一个原始操作系统API函数以便在选择的窗口中绘出文本和/或位图数据以及重新安装至少一个API钩。
处理数据的步骤包括在用户选择的GUI窗口中确定一个将使用一个指点设备提供的坐标进行标记的区域、根据定义区域的坐标在缓冲区中搜索数据、高亮显示GUI窗口中对应于GUI窗口中将被标记的区域中的数据的数据。
另外,高亮步骤包括步骤在GUI窗口中使用能将高亮文本与普通文本相区分的背景色绘出相应于GUI窗口中待标记出的区域中的数据的文本和沿着位像周围绘出一个矩形以便将标记的位像和原始位像区分开来。
另外,按照本发明的一个推荐实施例提供了一种处理并发送用户选择的窗口中包含的文本数据的方法,此方法包括步骤在子类化过程中获取选择的窗口上的接连的光标坐标、在本发明的DLL中的数据缓冲区中确定位于这些坐标之间的文本、在选择的窗口上使用不同的背景色绘出这些文本和随后将指定的文本发送到一个或多个输出设备。
另外,按照本发明的一个推荐实施例提供了一种处理和发送用户选择的窗口中包含的位图数据的方法,此方法包括步骤在一个子类化过程中获取选择的窗口上的光标坐标、在本发明的数据缓冲区中确定位图坐标、在选择的窗口上在位图边界绘出一个矩形框和随后将指定的位图发送到一个或多个输出设备。
此外,按照本发明的一个推荐实施例还提供了一种图形用户界面窗口数据处理系统。这个系统包括用于从图形用户界面窗口捕获数据和将此数据存储在一个数据缓冲区的获取装置、一个用于按照用户发出的命令处理数据的一部分的处理器,这个部分对应于用户指定的图形用户界面窗口中的一个区域、以及一个用于将处理器处理过的数据传送到用户选择的输出设备的路由器。
此外,按照本发明的一个推荐实施例还提供了一个计算机系统中一种从用户选择的图形用户接口窗口中获取数据的方法。计算机执行步骤包括安装图形用户界面应用程序编程接口函数钩用于重定向与用户选择的图形用户界面窗口相关联的应用程序发出的图形用户界面函数调用、使用户选择的图形用户界面窗口重绘以及在数据重绘向用户选择的图形用户界面窗口时截取数据。
此外,从一个图形用户界面窗口获取数据的方法还包括步骤在与用户选择的GUI窗口关联的一个窗口过程上创建至少一个钩。
最后,按照本发明的一个推荐实施例提供了一种用于获取、处理并发送用户选择的图形用户界面(GUI)窗口中包含的文本和/或位图数据的系统。图形用户界面窗口运行在一个操作系统下,这个系统包括用于从用户选择的GUI窗口获取数据的装置、一个用于存储获取的数据的数据缓冲区、一个用于根据从用户接收到的命令处理数据的处理器和一个用于将处理的数据发送到用户选择的至少一个输出设备的路由器。
本发明在此仅通过实例并结合附图进行描述,其中

图1给出了一个按照本发明的一个推荐实施例构造的应用程序应用于运行在计算机系统的一个GUI窗口环境下的任意一个应用程序时的实例窗口;图2是一个计算机处理系统的高层框图,本发明可以在其中使用;图3是本发明的一个推荐实施例的高层框图;图4是一个例示驻留于内存中的本发明、任意两个应用程序和一个GUI操作系统之间的通讯的高层框图;图5是一个例示从任意一个应用程序GUI窗口中获取数据并将数据存储在一个缓冲区中的方法的高层流程图;图6是一个例示选择要从中捕获数据的窗口和获取其句柄的方法的高层流程图;图7是一个例示在获取数据过程中选择的窗口的窗口过程中的消息路径的高程流程图;图8是一个例示构造用于保存从任意一个应用程序GUI窗口选择的数据的文本缓冲区的方法的高层流程图;图9是一个例示高亮先前在窗口中选择的文本的方法的高层流程图;和图10例示了包含在任意一个应用程序GUI窗口中的部分文本的文本标记部分。
本发明已经用一个Windows应用程序实现,此后将其称为ANY。应用程序ANY由一个主EXE模块和一些动态链接库(DLL)模块组成,这些动态链接库模块统称为ANY DLL模块。ANY应用程序驻留在计算机的内存中。
在此公开的本发明使得在窗口GUI环境中工作的计算机用户有能力获取并发送包含在属于任意一个应用程序的屏幕上可见的任意一个实际窗口中的数据,不管数据原先是不是“只用于查看”的。典型的应用程序中的一个本发明的实例如图1所示,现在以此为参考。
一个典型的计算机系统包括计算机32、鼠标150、键盘148和视频显示器或屏幕20。在本例中,计算机32运行在GUI操作系统控制下,例如Windows 3.1、Windows for Workgroups 3.11或Windows 95。显示器20上显示的有代表一个实施本发明的应用程序的一个窗口152和与任意一个应用程序关联的一个窗口34。窗口34对应的应用程序可以是任意的能够在屏幕20上绘出此窗口的应用程序。实施本发明的窗口152包含一个或多个图标156,代表不同的用户可编程的命令配置。
任意实际的可见的窗口都能使其内容被捕获。文本(即字串)数据和位像数据都可以被捕获。要捕获窗口中的数据,用户需要从窗口152拖动其中一个图标,例如图标157,然后放到被选择进行捕获的窗口中,例如窗口34。文本数据和图形对象都可以被用户高亮指定。用户可以决定将选择的数据发送或输出到一个或多个目的地,例如文件、另外一个窗口、图形工具或电子邮件服务(e-mail)。
图2显示的是一个可以运行本发明的计算机系统32的高层框图。计算机系统32包括一个连接到总线13的计算机处理器12。连接到总线13的还有只读存储器(ROM)14、随机存储器(RAM)16、海量存储子系统(硬盘)18、视频显示适配卡22和输入/输出(I/O)子系统30。计算机系统32在其核心具有核心计算机中央处理器12。ROM 14包含用于计算机处理器12的固件。此固件将保证计算机32进行初始化和执行系统检测等。RAM 16为计算机系统32提供在其中执行运算和运行应用程序的可读/写存储器。硬盘18为计算机32提供长期存储能力,用于存储系统和应用程序相关数据。视频显示适配器22为计算机32提供在视频显示器20上显示信息的能力。I/O子系统30提供一个计算机处理器和外部世界之间的接口。输入设备24包括键盘和指点设备等连接到I/O子系统30上。指点设备包括鼠标、轨迹球、图形输入板等等。串行口26允许计算机系统32与串行设备,如调制解调器进行通讯。并行口28允许计算机系统32与并行设备,如打印机进行通讯。总线13将计算机系统32的内部组件连接在一起,并提供一种组件间通讯的内部手段。
图3显示了本发明的一个推荐实施例。本发明的系统和设备,统称为10(即ANY应用程序),包括与一个数据处理器38和一个数据缓冲区44相连接的一个获取单元36。数据处理器38连接到一个路由器40和数据缓冲区44。路由器40也连接到数据缓冲区44。GUI窗口34的数据被获取单元36捕获并存储在数据缓冲区44中。数据缓冲区44可以完全或部分地驻留在RAM 16或硬盘18中。数据处理器38的作用是处理存储在数据缓冲区44中的数据。路由器40将处理过的数据38发送到一个或多个输出设备46。
图4显示了一个例示内存中本发明、任意两个应用程序和一GUI操作系统之间的通讯的高层框图。概念性地例示了进行通讯的基本组件,包括应用程序,应用程序包括本发明和操作系统。在一个推荐实施例中,操作系统204是Windows 3.1、Windows 3.11或Microsoft Windows 95。图4中例示的内存布局包括数据结构和程序或进程,用矩形框表示。连接各个框的直线表示信息在进程或数据结构之间传递。
需要注意的是图4仅仅是一个用于显示数据流程和应用程序与操作系统在内存中的通讯的概念上的例示。操作系统中被认为对于当前讨论不是至关重要的那些部分都没有描述和讨论。另外一个需要注意的地方是,在应用程序执行的过程中,内存的利用是始终变化的。数据结构和应用程序代码经常被加载到或卸载出内存。另外,在同一时间内存中可以驻留有很多的不同进程和数据结构。
操作系统的模块可以导出应用程序编程接口(API)函数(例如在Windows 3.1/3.11中的KERNEL.EXE、USER.EXE和GDI.EXE)。应用程序200和202是进行字处理、数据库管理或其它特定任务的进程。这些应用程序通过调用API函数与操作系统进行交互。GUI窗口中的文本和位图的绘画和外观是由应用程序通过调用下述操作系统GUI API来控制的。
这些函数包括用于文本的
用于文本TextOut 在指定位置写一个字符串TabbedTextOut写一个标记化字符串ExtTextOut 在一个矩形区域中写一个字符串用于位图BitBlt 从指定设备上下文中复制一个位图到一个设备上下文StretchBlt 复制一个位图,如果需要,扩展或压缩此位图SetDIBits设置一个位图的位为设备无关位图(DIB)格式中指定的值SetDIBitsToDevice从一个DIB中的将位直接设置到一个设备的表面应用程序ANY 206被适当地构造以实现系统10。应用程序ANY 206的EXE模块将其动态链接库(DLL)ANY DLL 212加载到内存。
为捕获一个GUI窗口中的数据,本发明利用了在本发明中被作为参考文件的Finnegan J.的“Hook and Monitor Any 16-bit Windows Functionwith Our ProcHook DLL”中描述的函数截取(function interception)技术,这种技术允许任何导出的函数调用可以被钩,如果需要可以多次。这种函数钩(function hooking)技术将一个API函数调用替换为ANY DLL212中提供的一个回叫函数,并且提供在此之后从回叫函数中调用原始函数的可能性,从而有效地链接此API调用。这样API调用的截取提供了捕获计算机系统中运行的任意应用程序的输出到屏幕上窗口的文本和位图的主要机制。
在一个推荐实施例中,钩和捕获机制是在与应用程序200、202交互操作的应用程序ANY206中实现的。应用程序ANY加载其关联的DLL,ANY DLL 212。ANY DLL由一个钩安装与卸载部件208和一个用于接收API调用并调用原始API的回叫函数的部件210所组成。ANY应用程序206使用钩安装与卸载部件208来在先前提到的API函数上安装截取钩。当应用程序200或202调用API函数来在屏幕上它们的一个窗口上画文本和/或位图时,控制就被传递到ANY DLL中的一个回叫函数210。此回叫函数接收作为API函数参数的要被绘到屏幕上的全部数据。回叫函数过滤后,参数数据被存储在一个内部缓冲区中。然后截取钩208被移去,在回叫函数210中调用原始API函数以便实际地在屏幕上画出这些数据。
图5显示了一个例示从一个任意应用程序GUI窗口中捕获数据并将其存储在一个缓冲区中的方法的高层流程图。图5显示的仅仅是需要的主要步骤,没有给出的是那些涉及资源初始化和取消初始化的步骤,这些对于熟练的技术人员来说是十分熟悉的。应用程序ANY是由工作在Windows环境中的用户通过在程序管理器中点击适当的图标或从命令行来加载和激活的(步骤220)。然后用户选择一个包含要进行捕获的文本和/或位图的窗口(步骤222)。
图6显示了例示一个推荐的选择进行数据捕获的窗口和获取其句柄的方法的高层流程图。首先通过点击一个与ANY应用程序关联的图标并将其拖放到其数据将被捕获或获取的目标窗口上,将ANY应用程序初始化(步骤240)。将图标放到目标窗口上的过程将使得ANY应用程序能获取此窗口的句柄。用户在ANY应用程序的图标上点击后,将对API函数SetCapture进行调用,此函数将把所有的鼠标或光标输入重定向到ANY应用程序的内部窗口(步骤242)。鼠标然后被拖到目标窗口(步骤244)。当鼠标或光标在目标窗口中,点击发生后屏幕上光标的坐标就被确定了(步骤248)。使用API函数WindowFromPoint,获得包含指定鼠标点光标窗口的句柄(步骤250)。
再来看图5,应用程序窗口的所有绘制都是由发向此窗口的过程的消息来触发的。为检测向一个窗口的过程的消息传送,需要对选择的窗口的过程进行子类化(subclass)(步骤224)。子类化还能让ANY应用程序知道什么时候应用程序的窗口过程将控制返还给操作系统。子类化在Petzold C.的在本发明中作为对比文件的“Programming Windows 3.1”中有进一步详尽描述。一旦应用程序的窗口被子类化,位于ANY DLL中的一个子类过程(回叫函数)将接收所有原来预定发向选择的窗口的窗口过程的消息。其中某些消息可以由ANY应用程序控制。
然后便开始截取(interception)来截取文本和位图函数,使用的是先前描述过的函数钩技术(步骤226)。API函数截取允许应用程序ANY接收从任意应用程序包括Windows本身定向到屏幕的所有输出。应用程序ANY然后强制与选择的窗口关联的应用程序重绘其窗口(步骤228)。在执行步骤228中,使用了API函数Redraw Windows,它将导致窗口消息WM_PAINT被发送到与选择的窗口关联的应用程序。窗口的消息WM_PAINT将强制应用程序重绘其窗口。随着窗口的重绘,便形成了文本缓冲(步骤230)。
现在将描述用于子类化和函数截取的控制路径(control path)。参见图7,一个窗口消息例如WM_PAINT进入位于ANY DLL中的子类化回叫函数(步骤252)。然后ANY应用程序初始化其内部缓冲区并且此消息被传递到原始窗口过程,使用API函数CallWindowProc(步骤254)。然后窗口过程处理此消息(步骤256)。当遇到消息WM_PAINT时,应用程序200或202将调用API函数以便绘出文本和位图。这些调用将被截取并重定向到ANY DLL的回叫函数。在ANY DLL中,过滤作为参数传递向API函数的绘制数据将并将其存储在ANY应用程序的一个内部缓冲区中。然后控制返还给ANY DLL的子类化过程(步骤258)。这将作为对ANY应用程序的一个通知,即消息的处理已经完成。控制然后返还给操作系统(步骤259)。
图8显示的是一个例示构造用于保存从任意一个应用程序GUI窗口捕获的数据的缓冲区的方法的高层流程图。前面已经描述了,应用程序200和202是由消息WM_PAINT来强制重绘其窗口的。在子类化过程中,此消息将使得缓冲区被初始化(步骤260)。此消息接下来被传送到应用程序200和202的原始窗口过程。为重绘其窗口,应用程序将调用一个或多个被ANY应用程序截取的API函数,(步骤262)。对于文本字串数据,字串本身和字串的起始位置坐标是API函数的主要参数。其它文本属性,比如字体、映射模式、背景色、文本色等从始终作为一个参数而包含的设备上下文(DC)结构句柄获得。为了确定字串中所有字符的坐标,通过API函数SelectObject和GetMapMode来确定字体和映射模式。随后,字串中所有字符的横纵坐标就可以通过API函数GetTextExtent来确定。这样,与此字串在应用程序窗口中显示的相同的一个精确的表示就存放在ANY应用程序的内部缓冲区中了(步骤264)。
在一个推荐实施例中,仅仅获取位图的顶角坐标。当围绕位图的矩形的坐标确定后,组成位图的所有位都从屏幕上复制下来。从屏幕复制位图的方法在作为本发明的对比文件的Microsoft Software Development Kit中有描述。
重绘不仅仅发生在选择的窗口的客户矩形区,也发生在屏幕的其它部分。ANY应用程序截获所有对API函数的调用从而强制过滤传入的数据。仅在选择的先前确定句柄的窗口中绘出的数据才必须存储在缓冲区中。在一个推荐实施例中,只有可以从中获取窗口句柄的API函数的参数是设备上下文。设备上下文是应用程序窗口和屏幕绘制设备(即设备驱动器)之间的联系环节。为从设备上下文中确定窗口句柄,必须考虑到几何问题。API函数GetDCOrg被用来获取窗口客户区左上角坐标。为了取得一个输出重定向到其上的窗口的句柄,要使用API函数WindowFromPoint,它提供绘制发生于其上的窗口的句柄。选择的窗口的句柄和输出重定向到的窗口的句柄的比较使得ANY应用程序可以将来自于选择的窗口的绘制数据存放在其缓冲区中。然后控制被返还给子类化过程,这样便给ANY应用程序发送绘制已经完成的信号(步骤266)。控制然后被返还给操作系统(步骤268)。
本发明的数据处理包含从ANY应用程序的缓冲区中选择文本和位图的一部分。接下来,被标记或被选择的数据被发送到一个或多个输出设备。为了指定数据以便其它应用,数据在选择的窗口中被标志出来。
为了在选择的窗口中标志文本,位于一组固定坐标之间的文本必须用不同的背景色画出以便用户可以将标志文本和未标志文本区分开来。在一个推荐实施例中,直线和块标志模式以及使用鼠标或光标双击的词标志被用来实现此文本高亮机制。
图9显示的是一个例示在先前选择的GUI窗口中标志或高亮显示文本的方法的高层流程图。被选择的窗口已经被子类化,并且光标或鼠标消息是在子类化过程中处理的,不允许进入原始窗口过程。这样它们将不控制应用程序200和202的动作。用户标志的区域通过鼠标或光标坐标来确定(步骤276)。对于文本,用用户选择的坐标来定义的区域中的字串出现在ANY应用程序的内部缓冲区中(步骤278)。API函数上的截取钩被临时移去以免再次捕获字串,造成不确定情况。然后字串用API函数ExtTextOut在选择的窗口中用不同的背景色进行重绘。背景色是通过API函数SetBkColor来设置的,使得文本在屏幕上看起来被标志出来。位图是通过在其周边使用位图的坐标绘出一个矩形来标志的(步骤280)。然后截取钩被重新建立。标志区域中的文本被发送到一个或多个输出设备以便进行进一步处理。
图10例示了包含在任意应用程序GUI窗口中的一部分文本的文本标志。在本例中,给出了程序管理器中对应于菜单项“文件/新”的对话框(在Windows 3.1和3.11中)(282)。对话框包含三个按钮,分别是“有效”、“取消”(284)和“帮助”。这些按钮本质上也是窗口,通常不支持数据传输。但是使用本发明,“取消”按钮中通常不可访问的文本此时可以被标记并可根据用户的命令发送到多种输出设备。例如,被标记的文本(286)可以被发送到另外一个应用程序,比如一个图形工具、字处理器、数据库管理系统等等。
以上已经结合一些实施例对本发明进行了描述,应该看到本发明还可以有许多的变形、修改其它应用。
权利要求
1.一种计算机系统中获取、处理和发送包含在用户选择的一个图形用户界面(GUI)窗口中的文本和/或位图数据的方法,所述图形用户界面窗口运行在一个操作系统下,此方法包括以下计算机可实现步骤a.从所述用户选择的所述GUI窗口获取所述数据;b.将所述获取的数据存储在一个数据缓冲区中;c.按照从所述用户接收到的命令处理所述数据;和d.将所述处理过的数据发送到用户选择的至少一个输出设备。
2.根据权利要求1的方法,其中所述获取步骤包括以下步骤a.将系统应用程序代码和关联的动态链接库(DLL)加载到所述操作系统的一个内存区域;b.确定所述用户选择的所述窗口的一个窗口句柄;c.在与所述用户选择的所述GUI窗口关联的一个窗口过程上安装至少一个钩;d.在所述操作系统的至少一个原始API函数上安装至少一个应用程序编程接口(API)钩;e.强制重绘所述用户选择的所述GUI窗口,从而使所述选择的窗口中的所有文本和/或位图数据被发送给所述选择的窗口;和f.用发送给所述选择的窗口的所述文本和/或位图数据填充一个文本缓冲区。
3.根据权利要求2的方法,其中所述填充一个文本缓冲区的步骤包括a.强制所述选择的窗口重绘其内容;b.将所述文本缓冲区初始化为一已知状态;c.利用所述DLL来捕获重绘向所述选择的窗口的文本和/或位图数据并将其存储在所述缓冲区中;d.将控制返还给所述子类化窗口过程;和e.将控制返还给所述操作系统。
4.根据权利要求3的方法,其中所述利用所述DLL来捕获文本和/或位图数据的步骤包括a.临时地移去所述至少一个API钩;b.复制所述API函数参数中包含的数据到一临时缓冲区;c.调用所述至少一个原始操作系统API函数以便在所述选择的窗口上绘出所述文本和/或位图数据;和d.重新安装所述至少一个API钩。
5.根据权利要求1的方法,其中所述处理步骤包括步骤a.确定利用一种指点设备提供的坐标标志的所述用户选择的所述GUI窗口的一个区域;b.在所述缓冲区中按照定义所述区域的所述坐标搜索数据;和c.高亮显示所述GUI窗口中对应所述GUI窗口中要进行标志的所述区域中所述数据的数据。
6.根据权利要求5的方法,其中所述高亮步骤包括步骤a.在所述GUI窗口中使用一种能将标志文本同原始文本区分开来的背景色绘出对应于所述GUI窗口中所述区域中要进行标志的所述数据的文本;和b.在所述位像的周围绘出一个矩形,以便将标志位像同原始位像区分开来。
7.一种图形用户界面窗口数据处理系统,包括a.用于从一个图形用户界面窗口中捕获数据的获取装置,所述获取装置将所述数据存储在一个数据缓冲区中;b.一个用于按照用户发出的命令处理部分所述数据的处理器,所述部分对应于图形用户界面窗口上用户指定的一个区域;和c.一个用于将所述处理器处理的所述数据传输到用户选择的至少一个输出设备的路由器。
8.计算机系统中从一个用户选择的一个图形用户界面窗口中获取数据的方法,此计算机可实施步骤包括a.安装图形用户界面应用程序编程接口函数钩,以重定向来自于与用户选择的图形用户界面窗口关联的一个应用程序的图形用户界面函数调用;b.使得用户选择的图形用户界面窗口重绘;和c.当所述数据重绘向用户选择的图形用户界面窗口时截取所述数据。
9.权利要求8的方法,还包括在一个与所述用户选择的GUI窗口关联的窗口过程上创建至少一个钩的步骤。
10.一种用于获取、处理和发送包含在一个用户选择的图形用户界面(GUI)窗口中的文本和/或位图数据的系统,所述图形用户界面窗口运行在一个操作系统下,所述系统包括a.用于从所述用户选择的所述GUI窗口获取所述数据的装置;b.一个用于存储所述获取的数据的数据缓冲区;c.一个用于按照从所述用户接收到的命令处理所述数据的处理器;和d.一个用于将所述处理过的数据发送向所述用户选择的至少一个输出设备的路由器;
11.根据权利要求10的系统,其中所述用于获取的装置包括a.用于将系统应用程序代码和相关联的动态链接库(DLL)加载到所述操作系统的一个内存区域的装置;b.用于确定所述用户选择的所述窗口的一个窗口句柄的装置;c.用于在与所述用户选择的所述GUI窗口相关联的一个窗口过程上安装至少一个钩的装置;d.用于在所述操作系统的至少一个原始API函数上安装至少一个应用程序编程接口(API)钩的装置;e.用于强制所述用户选择的所述GUI窗口重绘,以便使所述选择的窗口中的所有的文本和/或位图数据被发送到所述选择的窗口的装置;和f.用于用所述发送向所述选择的窗口的文本和/或位图数据填充一个文本缓冲区的装置。
12.根据权利要求11的系统,其中所述用于填充一个文本缓冲区的装置包括a.用于强制所述选择的窗口重绘其内容的装置;b.用于将所述文本缓冲区初始化为一个已知状态的装置;c.一个用于捕获重绘向所述选择的窗口的文本和/或位图数据并将其存储在所述缓冲区中的DLL;d.用于将控制返还给所述子类化窗口过程的装置;和e.用于将控制返还给所述操作系统的装置。
13.根据权利要求12的系统,其中所述DLL包括a.用于临时移去所述至少一个API钩的装置;b.用于将所述API函数的参数中包含的数据复制到一个临时缓冲区的装置;c.用于调用所述至少一个原始操作系统API函数以便在所述选择的窗口上绘出所述文本和/或位图数据的装置;和d.用于重新安装所述至少一个API钩的装置。
14.根据权利要求10的系统,其中所述处理器包括a.确定所述用户选择的利用一个指点设备提供的坐标来标志的所述GUI窗口上的一个区域的装置;b.用于在所述缓冲区中根据所述定义所述区域的坐标来搜索数据的;和c.用于高亮显示所述GUI窗口中对应于所述GUI窗口中所述区域中要被标志的所述数据的数据的装置。
15.根据权利要求14的系统,其中所述用于高亮的装置包括a.用于在所述GUI窗口中用一个能将标志文本和原始文本区分开来的背景色绘出对应于所述GUI窗口中所述区域中要被标志的所述数据的文本的装置;和b.用于在所述位像周围绘出一个矩形,以便将标志位像与原始位像区分开来的装置。
全文摘要
本发明描述了一种获取、处理和发送包含在一个图形用户界面窗口中的数据的装置和方法。包含在用户选择的窗口(34)中的数据由一个采集单元(36)捕获并存储在一个数据缓冲区(44)中。此数据,不管是字串数据还是位像数据,以标准的图形用户界面文本和/或位图格式存储在数据缓冲区中。用户可以标记选择的窗口中包含的文本或位像的一部分。经过处理的数据接下来被发送到一个或多个输出设备(46)。输出设备可以包括如文件、打印机、窗口、电子邮件服务和操作系统临时缓冲区。描述了在选择的窗口中获取和标记数据的方法。
文档编号G06F9/46GK1262748SQ97194784
公开日2000年8月9日 申请日期1997年4月2日 优先权日1996年4月4日
发明者伊兰·波雷, 阿纳·阿尔格马, 伊亚·西皮波格 申请人:安尼索福特公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1