专利名称:工具栏功能的扩充方法
技术领域:
本发明是有关一种工具栏功能的扩充方法,特别是一种对Windows系列操作系统的应用程序的工具栏进行功能扩充的方法,用于在使用者操作工具栏的过程中,即时地扩充或是修改工具栏的功能。
在Windows作业系统中运作的已知应用程序,如Office95系列文书应用程序(Word 95,excel 95,powerpoint 95……),都具有菜单(menu)和工具栏(tool bar)供使用者选取或操作,它是由一系列的图形按钮组成,每个图形按钮都可以执行特定的功能,借此方便使用者操作,提高操作效率。若是要对某一应用程序的工具栏的功能进行扩充(例如增加或删除工具栏中的图形按钮),修改工具栏的功能,或是增加原有工具栏所不具有的功能,一种方式是取得应用程序的原始码(Source code),对其进行编修,另一种方式则是取用其他应用程序的工具栏的功能而实现功能的扩充。
对大部分惯用的应用程序而言,如果某一应用程序无法取得另一应用程序的原始码(Source code),则无法透过取用另一应用程序的工具栏的功能达到扩充本身工具栏的功能的目的,也就是说,如果不是程序设计师本身开发的应用程序,就不能透过取用其他应用程序的工具栏功能实现对本身工具栏的结构进行修改和扩充。
本发明的目的是提供一种对Windows作业系统的应用程序的工具栏结构进行功能扩充的方法,用以在一电脑系统中,实现使用者对工具栏进行操作时,即时地扩充工具栏的功能的目的。
本发明的另一目的是提供一种利用拦截程序,即时获取当前工具栏的操作资料的方法,以便根据所获得的操作资料自一动态资料库中检索取得所需的资料,用于扩充工具栏的功能。
本发明的再一目的是提供一种工具栏的功能的扩充方法,用于增加原应用程序的工具栏中所不具备的功能。
本发明提供了一种对Windows系列作业系统中的应用程序的工具栏结构进行功能扩充的方法,用以在一电脑系统中,实现使用者对工具栏进行操作时,即时地扩充工具栏的功能。例如当某一应用程序的扩充功能按钮标志(icon)被点选时,执行功能的扩充,或者对当前显示的按钮文字进行即时汉化等功能。
本发明所揭露的方法主要是借由下列的功能模块的运作而完成的,其包括有一拦截模块、一扩充功能处理模块以及一动态资料库。利用拦截模块获得操作系统的讯息队列(Massage queue)中有关工具栏结构的操作资料,扩充功能处理模块则是根据获得的操作资料自动态资料库中检索取得所需的资料,完成对工具栏结构进行功能扩充的目的。
本发明提供了一种在某一应用程序(特别是那种由他人所开发设计的应用程序)运行时(runtime)对其进行即时的功能扩充的方法。利用本发明的方法可以检测到某一应用程序的工具栏的即时操作资料,并可以对该工具栏的功能进行扩充,并且不影响到应用程序本身原有的功能,这种功能扩充可以包括两个方面,一是在保证工具栏原有功能的情况下,对应用程序所使用的工具栏功能进行增加、删除、修改等;二是在工具栏中增加原有工具栏中所不具备的功能。
本发明提供的一种工具栏功能的扩充方法,应用于一电脑系统的视窗作业(Windows)环境中,用于提供一种在操作工具栏之时可以扩充工具栏的功能的方法,其中该工具栏功能的扩充方法包括有用程序的相关资料;启动并初始化一拦截程序和监控方式,用以监控并且拦截该视窗作业系统的讯息循环队列中的讯息;取得该讯息中有关工具栏的操作资料;以及根据该操作资料检索该动态资料库,取得用以扩充该工具栏功能所需的功能扩充资料,并且处理该功能扩充资料完成该工具栏的功能扩充。
附图简要说明图1,是为实现本发明的方法的电脑系统方框图;图2A,显示在一电脑系统中未加入本发明的拦截程序时,应用程序与作业系统之间的运作关系图;图2B,显示在一电脑系统中加入本发明的拦截程序时,应用程序与作业系统之间的运作关系图;图3,为本发明的动态资料库的结构图;图4,为本发明的主要步骤流程图;图5A,5B,为本发明的一实施例的详细步骤流程图。
有关本发明的详细技术内容及实施例,将参考
如后。
请参阅图1,是为实现本发明的方法的电脑系统方框图。其是由下列的硬件部分与软件部分所构成,包括有一Windows系列的作业系统10(如Windows 3.1,Windows 95,Winows98),用以提供应用程序一种视窗作业的环境;一输入单元20(如键盘,鼠标器或其他功能类似者),可供使用者输入命令或进行工具的操作;一输出单元30(如显示器、触摸式显示器、喇叭或其他功能类似的多媒体输出设备),用以显示可视化的操作讯息或是声音讯息;一讯息循环队列40(Massage loop);一应用程序50(Application);一拦截模块60(Hook);一功能扩充处理模块70;以及一动态资料库80(Dynamic Link Library,DLL)。
关于一般Windows系列的作业系统(Windows 3.1,Wineows 95或Windows 98等)的运作,其中所有的事件处理都是通过讯息来驱动的,讯息循环队列40就是一种运送作业系统10的所有讯息的系统循环,就是说,所有的讯息都需进入讯息循环队列40,再分发(Dispatch)给各个应用程序50(如图2A所示)。而有关工具栏的讯息则经讯息循环队列40判断,再把有关工具栏的讯息分发给工具栏所属的应用程序50(就是工具栏的宿主程序)。本发明利用一拦截(Hook)模块60在讯息传送的过程中加入一个过滤(如图2B所示)。在本发明所揭露的方法中,拦截模块60的作用是拦截讯息循环队列40之中的每一条讯息,并传送至功能扩充处理模块70。功能扩充处理模块70则是对获得的讯息进行过滤和相应的处理,对于需要进行处理的讯息,再于动态资料库80中检索,用于取得所需的资料(就是用于扩充工具栏的功能所需的资料),再对取得的资料处理,然后将处理的结果输出至输出单元30或是应用程序50,完成工具栏功能的扩充;相反地,对于不需要的讯息不作处理。
在Windwos作业系统10之中,任一种包含有工具栏的应用程序50是一个独立的进程(procedure),如果想对其进行扩充,必须具有和其共享资料的能力,就一般的动态资料库(DLL)而言,不同的应用程序虽然可以共享动态资料库的代码段(Code Segment),但对于资料段(Data Segment)而言,每一个应用程序所取得的都是对全部资料段的复本(copy)。例如、在同一个动态资料库中,某一应用程序改变了动态资料库中的一个变量(Variable)XX,这种改变对于另一个使用这个动态资料库的应用程序来说,并不是可见的,因为它仅仅是保存了动态资料库中全部变量的另一份复本(copy)。而在实现本发明所揭露的方法时,我们需要的是任何使用该动态资料库的应用程序50改变资料段的内容时,所有使用该动态资料库的应用程序50都可见,也就是说,需要维护一份唯一的资料段(Data Segment),以达到资料共享的目的,而本发明的实施手段就是透过在动态资料库80之中将一资料段定义(define)为共享资料段81(Sharing Data Segment)的方式加以实现。而这个动态资料库80的结构如图3所示,自图3中可以看见,不同的应用程序50a,50b除了各自具有一个资料段的复本C1,C2之外,还共同使用其中的共享资料段81。
在动态资料库80之中记录有应用程序50之中有多少个菜单,多少个工具栏,每个菜单有多少个子项,每个工具栏有多少个图形按钮,每个菜单的名称与标示(ID)以及每个工具栏的名称与标示(ID),以及用于扩充功能的相关资料项等,以便提供功能扩充处理模块70进行工具栏的功能扩充处理时所需的资料。
本发明的主要步骤流程,如图4所示,包括有1.首先载入预定义的动态资料库,其中包括有欲扩充功能的应用程序的相关资料,也就是后续步骤中所称包含有欲监视的工具栏的应用程序,及其所包含的工具栏的相关资料;2.启动并初始化拦截程序60(即为一种钩接函数,Hook)和监控方式,用以监控并且拦截作业系统10的讯息循环队列40中的讯息;3.取得前述讯息中有关工具栏的操作资料,此一操作资料包含有当前弹出的工具栏的句柄(handel),当前弹出的工具栏的名称,与游标的位置;以及4.检索动态资料库取得用以扩充工具栏功能所需的功能扩充资料,并且处理功能扩充资料完成工具栏的功能扩充。
其中的步骤3还包括有A.判断拦截程序60发来的讯息是否为需要监视的窗口类(即为一种窗口物件类别(Class),其中包含有欲监视的工具栏窗口),如果不是则等待下一条自拦截程序60发来的讯息,否则进行下一步骤;B.判断前述的窗口类讯息是否是工具栏的宿主窗口,如果不是则等待自拦截程序60发来的下一条讯息,否则进行下一步骤;以及C.取得工具栏的操作资料。
前述的步骤4则更包含有a.判断得到的工具栏是否为需要扩充功能的工具栏,如果不是,则返回至载入预定义的动态资料库的步骤1重新开始,否则在输出单元中显示一个扩充功能的揭示(如图形按钮或对话框);b.检索读取对应的动态资料库,取得工具栏的识别码(ID);c.根据取得的工具栏识别码(ID),从动态资料库中检索取得对应的资料段的资料识别码(ID);以及d.根据取得的资料识别码(ID),从动态资料库检索取得用以扩充工具栏功能所需的功能扩充资料,并且透过功能扩充处理模块70处理功能扩充资料完成工具栏的功能扩充。
最后以图5所示的流程图,说明利用本发明的方法对Internet Explorer5.0应用程序的工具栏提供即时线上帮助的扩充功能的具体实施例。本实施例的目的是对标准的工具栏功能加以扩充,实现可以利用多媒体播放的方式显示工具栏中的某一功能,以便使用者能更直观,更方便的学习和使用此一应用程序,其表现形式是在可进行多媒体即时线上帮助的工具栏旁增加一帮助窗口,当使用者点选某一帮助选项按钮的时候,就会在该帮助窗口中播放或显示关于该项按钮功能的多媒体资料。
达成以上扩充工具栏功能的目的,可借由下列的步骤实现(如图5A,5B所示),其包括有1.首先载入预定义的动态资料库;2.启动并初始化拦截(Hook)程序60和监控方式,用以监控并且拦截作业系统10的讯息循环队列40中的讯息;3.判断拦截程序60所拦截的讯息是否为Rebare Window 32(此为一种窗口目标类别(Class),其中包含有欲监视的工具栏窗口)类发出的通知讯息(Notify,此为子窗口通知其父窗口的讯息),若不是则等待下一条自拦截程序60发来的讯息;4.判断该Rebare Window 32的宿主应用程序是否即为欲扩充功能的Internet Explorer5.0应用程序,若为是进行下一步骤,否则等待下一条自拦截程序60发来的讯息;5.判断Notify是否为工具栏的操作讯息(如点选该工具栏),如果是则取得此一工具栏的句柄及名称,否则等待下一条自拦截程序60发来的讯息;6.根据得到的工具栏的句柄及名称检索动态资料库,取得工具栏的识别码(ID);7.根据该工具栏的识别码在动态资料库中检索,如果有包含有线上即时帮助选项功能,则进行下一步骤,否则返回至载入预定义的动态资料库的步骤1;8.根据游标的位置取得工具栏的位置;9.在该工具栏之旁建立一个帮助(ToolTip)窗口,在此一帮助窗口中的每一个帮助项目对应于一个帮助项识别码(ID);10.当帮助(ToolTip)窗口中的某一帮助项目(如播放图形的按钮)被选取时,取得该帮助项目的识别码(ID);11.检索该动态资料库,找出对应的多媒体的控制项;12.调用一多媒体播放处理模块处理该多媒体控制项。
本发明提供了一种对Windows系列操作系统的应用程序中的工具栏进行功能扩充的方法,可以在一电脑系统中,当使用者对工具栏进行操作时,扩充工具栏的功能,例如添加,修改,替换,删除某些选项按钮等等。例如,利用本发明可以实现对工具栏的即时汉化(日化,韩化等等),并且不破坏工具栏原有的功能;利用本发明还可以实现多媒体的线上即时帮助功能,当使用者将游标移到工具栏上的某一选项按钮时,利用影像声音等多媒体的播放方式向使用者讲解该工具栏上某一选项按钮的功能等等。
权利要求
1.一种工具栏功能的扩充方法,应用于一电脑系统的视窗作业(Windows)环境中,用于提供一种在操作工具栏之时可以扩充工具栏的功能的方法,其特征是该工具栏功能的扩充方法包括有用程序的相关资料;启动并初始化一拦截程序和监控方式,用以监控并且拦截该视窗作业系统的讯息循环队列中的讯息;取得该讯息中有关工具栏的操作资料;以及根据该操作资料检索该动态资料库,取得用以扩充该工具栏功能所需的功能扩充资料,并且处理该功能扩充资料完成该工具栏的功能扩充。
2.如权利要求1所述的工具栏功能的扩充方法,其特征是载入该动态资料库的步骤,更包括有定义一共享资料段的步骤。
3.如权利要求1所述的工具栏功能的扩充方法,其特征是该动态资料库记录有该应用程序之中有多少个菜单,多少个工具栏,每个菜单有多少个子项,每个该工具栏有多少个图形按钮,每个菜单的名称与标示(ID)与每个该工具栏的名称与标示(ID),以及用于扩充功能的相关资料项等,以便提供功能扩充处理模块70进行工具栏的功能扩充处理时所需的资料。
4.如权利要求1所述的工具栏功能的扩充方法,其特征是该工具栏的操作资料包括有当前弹出的该工具栏的句柄(handel),当前弹出的该工具栏的名称,与游标的位置。
5.如权利要求1所述的工具栏功能的扩充方法,其特征是取得有关该工具栏的操作资料的步骤还包括有判断该拦截程序拦截的该讯息是否为需要监视的窗口类,如果不是则等待下一条自该拦截程序拦截的讯息,否则进行下一步骤;判断前述的窗口类讯息是否为该工具栏的宿主窗口,如果不是则等待自该拦截程序拦截的下一条讯息,否则进行下一步骤;以及取得该工具栏的操作资料。
6.如权利要求1所述的工具栏功能的扩充方法,其特征是取得所需的该功能扩充资料,并且处理该功能扩充资料完成该工具栏的功能扩充的步骤包括有判断该工具栏是否为需要扩充功能的工具栏,如果不是,则返回至该载入预定义的动态资料库的步骤,否则显示一个扩充功能的提示;检索该动态资料库,取得该工具栏的识别码;根据取得的该工具栏识别码,从该动态资料库中检索取得对应的资料段的资料识别码;以及根据取得的该资料识别码,从该动态资料库检索取得用以扩充该工具栏功能所需的功能扩充资料,并且处理该功能扩充资料完成该工具栏的功能扩充。
全文摘要
一种工具栏(Toolbar)功能的扩充方法,应用于电脑系统中,用于提供一种在操作工具栏之时可以扩充工具栏的功能(例如添加,修改,替换,删除某些按钮等等)的方法。利用拦截程序从作业系统(OS)的讯息队列(Massage queue)中拦截工具栏的操作资料,再根据所获得的操作资料自一动态资料库中检索以取得所需的资料,用于扩充工具栏中相应操作的功能,既不影响到原有工具栏的功能,更可以扩充原有工具栏所不具备的功能,例如:提供工具栏的即时汉化或是以多媒体的显示方式提供求助功能等等。
文档编号G06F9/318GK1310384SQ0010237
公开日2001年8月29日 申请日期2000年2月21日 优先权日2000年2月21日
发明者林光信, 宋建福, 王学武 申请人:英业达股份有限公司