專利名稱:工具欄功能的擴充方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)一種工具欄功能的擴充方法,特別是一種對Windows系列操作系統(tǒng)的應(yīng)用程序的工具欄進行功能擴充的方法,用于在使用者操作工具欄的過程中,即時地擴充或是修改工具欄的功能。
在Windows作業(yè)系統(tǒng)中運作的已知應(yīng)用程序,如Office95系列文書應(yīng)用程序(Word 95,excel 95,powerpoint 95……),都具有菜單(menu)和工具欄(tool bar)供使用者選取或操作,它是由一系列的圖形按鈕組成,每個圖形按鈕都可以執(zhí)行特定的功能,借此方便使用者操作,提高操作效率。若是要對某一應(yīng)用程序的工具欄的功能進行擴充(例如增加或刪除工具欄中的圖形按鈕),修改工具欄的功能,或是增加原有工具欄所不具有的功能,一種方式是取得應(yīng)用程序的原始碼(Source code),對其進行編修,另一種方式則是取用其他應(yīng)用程序的工具欄的功能而實現(xiàn)功能的擴充。
對大部分慣用的應(yīng)用程序而言,如果某一應(yīng)用程序無法取得另一應(yīng)用程序的原始碼(Source code),則無法透過取用另一應(yīng)用程序的工具欄的功能達到擴充本身工具欄的功能的目的,也就是說,如果不是程序設(shè)計師本身開發(fā)的應(yīng)用程序,就不能透過取用其他應(yīng)用程序的工具欄功能實現(xiàn)對本身工具欄的結(jié)構(gòu)進行修改和擴充。
本發(fā)明的目的是提供一種對Windows作業(yè)系統(tǒng)的應(yīng)用程序的工具欄結(jié)構(gòu)進行功能擴充的方法,用以在一電腦系統(tǒng)中,實現(xiàn)使用者對工具欄進行操作時,即時地擴充工具欄的功能的目的。
本發(fā)明的另一目的是提供一種利用攔截程序,即時獲取當前工具欄的操作資料的方法,以便根據(jù)所獲得的操作資料自一動態(tài)資料庫中檢索取得所需的資料,用于擴充工具欄的功能。
本發(fā)明的再一目的是提供一種工具欄的功能的擴充方法,用于增加原應(yīng)用程序的工具欄中所不具備的功能。
本發(fā)明提供了一種對Windows系列作業(yè)系統(tǒng)中的應(yīng)用程序的工具欄結(jié)構(gòu)進行功能擴充的方法,用以在一電腦系統(tǒng)中,實現(xiàn)使用者對工具欄進行操作時,即時地擴充工具欄的功能。例如當某一應(yīng)用程序的擴充功能按鈕標志(icon)被點選時,執(zhí)行功能的擴充,或者對當前顯示的按鈕文字進行即時漢化等功能。
本發(fā)明所揭露的方法主要是借由下列的功能模塊的運作而完成的,其包括有一攔截模塊、一擴充功能處理模塊以及一動態(tài)資料庫。利用攔截模塊獲得操作系統(tǒng)的訊息隊列(Massage queue)中有關(guān)工具欄結(jié)構(gòu)的操作資料,擴充功能處理模塊則是根據(jù)獲得的操作資料自動態(tài)資料庫中檢索取得所需的資料,完成對工具欄結(jié)構(gòu)進行功能擴充的目的。
本發(fā)明提供了一種在某一應(yīng)用程序(特別是那種由他人所開發(fā)設(shè)計的應(yīng)用程序)運行時(runtime)對其進行即時的功能擴充的方法。利用本發(fā)明的方法可以檢測到某一應(yīng)用程序的工具欄的即時操作資料,并可以對該工具欄的功能進行擴充,并且不影響到應(yīng)用程序本身原有的功能,這種功能擴充可以包括兩個方面,一是在保證工具欄原有功能的情況下,對應(yīng)用程序所使用的工具欄功能進行增加、刪除、修改等;二是在工具欄中增加原有工具欄中所不具備的功能。
本發(fā)明提供的一種工具欄功能的擴充方法,應(yīng)用于一電腦系統(tǒng)的視窗作業(yè)(Windows)環(huán)境中,用于提供一種在操作工具欄之時可以擴充工具欄的功能的方法,其中該工具欄功能的擴充方法包括有用程序的相關(guān)資料;啟動并初始化一攔截程序和監(jiān)控方式,用以監(jiān)控并且攔截該視窗作業(yè)系統(tǒng)的訊息循環(huán)隊列中的訊息;取得該訊息中有關(guān)工具欄的操作資料;以及根據(jù)該操作資料檢索該動態(tài)資料庫,取得用以擴充該工具欄功能所需的功能擴充資料,并且處理該功能擴充資料完成該工具欄的功能擴充。
附圖簡要說明圖1,是為實現(xiàn)本發(fā)明的方法的電腦系統(tǒng)方框圖;圖2A,顯示在一電腦系統(tǒng)中未加入本發(fā)明的攔截程序時,應(yīng)用程序與作業(yè)系統(tǒng)之間的運作關(guān)系圖;圖2B,顯示在一電腦系統(tǒng)中加入本發(fā)明的攔截程序時,應(yīng)用程序與作業(yè)系統(tǒng)之間的運作關(guān)系圖;圖3,為本發(fā)明的動態(tài)資料庫的結(jié)構(gòu)圖;圖4,為本發(fā)明的主要步驟流程圖;圖5A,5B,為本發(fā)明的一實施例的詳細步驟流程圖。
有關(guān)本發(fā)明的詳細技術(shù)內(nèi)容及實施例,將參考
如后。
請參閱圖1,是為實現(xiàn)本發(fā)明的方法的電腦系統(tǒng)方框圖。其是由下列的硬件部分與軟件部分所構(gòu)成,包括有一Windows系列的作業(yè)系統(tǒng)10(如Windows 3.1,Windows 95,Winows98),用以提供應(yīng)用程序一種視窗作業(yè)的環(huán)境;一輸入單元20(如鍵盤,鼠標器或其他功能類似者),可供使用者輸入命令或進行工具的操作;一輸出單元30(如顯示器、觸摸式顯示器、喇叭或其他功能類似的多媒體輸出設(shè)備),用以顯示可視化的操作訊息或是聲音訊息;一訊息循環(huán)隊列40(Massage loop);一應(yīng)用程序50(Application);一攔截模塊60(Hook);一功能擴充處理模塊70;以及一動態(tài)資料庫80(Dynamic Link Library,DLL)。
關(guān)于一般Windows系列的作業(yè)系統(tǒng)(Windows 3.1,Wineows 95或Windows 98等)的運作,其中所有的事件處理都是通過訊息來驅(qū)動的,訊息循環(huán)隊列40就是一種運送作業(yè)系統(tǒng)10的所有訊息的系統(tǒng)循環(huán),就是說,所有的訊息都需進入訊息循環(huán)隊列40,再分發(fā)(Dispatch)給各個應(yīng)用程序50(如圖2A所示)。而有關(guān)工具欄的訊息則經(jīng)訊息循環(huán)隊列40判斷,再把有關(guān)工具欄的訊息分發(fā)給工具欄所屬的應(yīng)用程序50(就是工具欄的宿主程序)。本發(fā)明利用一攔截(Hook)模塊60在訊息傳送的過程中加入一個過濾(如圖2B所示)。在本發(fā)明所揭露的方法中,攔截模塊60的作用是攔截訊息循環(huán)隊列40之中的每一條訊息,并傳送至功能擴充處理模塊70。功能擴充處理模塊70則是對獲得的訊息進行過濾和相應(yīng)的處理,對于需要進行處理的訊息,再于動態(tài)資料庫80中檢索,用于取得所需的資料(就是用于擴充工具欄的功能所需的資料),再對取得的資料處理,然后將處理的結(jié)果輸出至輸出單元30或是應(yīng)用程序50,完成工具欄功能的擴充;相反地,對于不需要的訊息不作處理。
在Windwos作業(yè)系統(tǒng)10之中,任一種包含有工具欄的應(yīng)用程序50是一個獨立的進程(procedure),如果想對其進行擴充,必須具有和其共享資料的能力,就一般的動態(tài)資料庫(DLL)而言,不同的應(yīng)用程序雖然可以共享動態(tài)資料庫的代碼段(Code Segment),但對于資料段(Data Segment)而言,每一個應(yīng)用程序所取得的都是對全部資料段的復本(copy)。例如、在同一個動態(tài)資料庫中,某一應(yīng)用程序改變了動態(tài)資料庫中的一個變量(Variable)XX,這種改變對于另一個使用這個動態(tài)資料庫的應(yīng)用程序來說,并不是可見的,因為它僅僅是保存了動態(tài)資料庫中全部變量的另一份復本(copy)。而在實現(xiàn)本發(fā)明所揭露的方法時,我們需要的是任何使用該動態(tài)資料庫的應(yīng)用程序50改變資料段的內(nèi)容時,所有使用該動態(tài)資料庫的應(yīng)用程序50都可見,也就是說,需要維護一份唯一的資料段(Data Segment),以達到資料共享的目的,而本發(fā)明的實施手段就是透過在動態(tài)資料庫80之中將一資料段定義(define)為共享資料段81(Sharing Data Segment)的方式加以實現(xiàn)。而這個動態(tài)資料庫80的結(jié)構(gòu)如圖3所示,自圖3中可以看見,不同的應(yīng)用程序50a,50b除了各自具有一個資料段的復本C1,C2之外,還共同使用其中的共享資料段81。
在動態(tài)資料庫80之中記錄有應(yīng)用程序50之中有多少個菜單,多少個工具欄,每個菜單有多少個子項,每個工具欄有多少個圖形按鈕,每個菜單的名稱與標示(ID)以及每個工具欄的名稱與標示(ID),以及用于擴充功能的相關(guān)資料項等,以便提供功能擴充處理模塊70進行工具欄的功能擴充處理時所需的資料。
本發(fā)明的主要步驟流程,如圖4所示,包括有1.首先載入預定義的動態(tài)資料庫,其中包括有欲擴充功能的應(yīng)用程序的相關(guān)資料,也就是后續(xù)步驟中所稱包含有欲監(jiān)視的工具欄的應(yīng)用程序,及其所包含的工具欄的相關(guān)資料;2.啟動并初始化攔截程序60(即為一種鉤接函數(shù),Hook)和監(jiān)控方式,用以監(jiān)控并且攔截作業(yè)系統(tǒng)10的訊息循環(huán)隊列40中的訊息;3.取得前述訊息中有關(guān)工具欄的操作資料,此一操作資料包含有當前彈出的工具欄的句柄(handel),當前彈出的工具欄的名稱,與游標的位置;以及4.檢索動態(tài)資料庫取得用以擴充工具欄功能所需的功能擴充資料,并且處理功能擴充資料完成工具欄的功能擴充。
其中的步驟3還包括有A.判斷攔截程序60發(fā)來的訊息是否為需要監(jiān)視的窗口類(即為一種窗口物件類別(Class),其中包含有欲監(jiān)視的工具欄窗口),如果不是則等待下一條自攔截程序60發(fā)來的訊息,否則進行下一步驟;B.判斷前述的窗口類訊息是否是工具欄的宿主窗口,如果不是則等待自攔截程序60發(fā)來的下一條訊息,否則進行下一步驟;以及C.取得工具欄的操作資料。
前述的步驟4則更包含有a.判斷得到的工具欄是否為需要擴充功能的工具欄,如果不是,則返回至載入預定義的動態(tài)資料庫的步驟1重新開始,否則在輸出單元中顯示一個擴充功能的揭示(如圖形按鈕或?qū)υ捒?;b.檢索讀取對應(yīng)的動態(tài)資料庫,取得工具欄的識別碼(ID);c.根據(jù)取得的工具欄識別碼(ID),從動態(tài)資料庫中檢索取得對應(yīng)的資料段的資料識別碼(ID);以及d.根據(jù)取得的資料識別碼(ID),從動態(tài)資料庫檢索取得用以擴充工具欄功能所需的功能擴充資料,并且透過功能擴充處理模塊70處理功能擴充資料完成工具欄的功能擴充。
最后以圖5所示的流程圖,說明利用本發(fā)明的方法對Internet Explorer5.0應(yīng)用程序的工具欄提供即時線上幫助的擴充功能的具體實施例。本實施例的目的是對標準的工具欄功能加以擴充,實現(xiàn)可以利用多媒體播放的方式顯示工具欄中的某一功能,以便使用者能更直觀,更方便的學習和使用此一應(yīng)用程序,其表現(xiàn)形式是在可進行多媒體即時線上幫助的工具欄旁增加一幫助窗口,當使用者點選某一幫助選項按鈕的時候,就會在該幫助窗口中播放或顯示關(guān)于該項按鈕功能的多媒體資料。
達成以上擴充工具欄功能的目的,可借由下列的步驟實現(xiàn)(如圖5A,5B所示),其包括有1.首先載入預定義的動態(tài)資料庫;2.啟動并初始化攔截(Hook)程序60和監(jiān)控方式,用以監(jiān)控并且攔截作業(yè)系統(tǒng)10的訊息循環(huán)隊列40中的訊息;3.判斷攔截程序60所攔截的訊息是否為Rebare Window 32(此為一種窗口目標類別(Class),其中包含有欲監(jiān)視的工具欄窗口)類發(fā)出的通知訊息(Notify,此為子窗口通知其父窗口的訊息),若不是則等待下一條自攔截程序60發(fā)來的訊息;4.判斷該Rebare Window 32的宿主應(yīng)用程序是否即為欲擴充功能的Internet Explorer5.0應(yīng)用程序,若為是進行下一步驟,否則等待下一條自攔截程序60發(fā)來的訊息;5.判斷Notify是否為工具欄的操作訊息(如點選該工具欄),如果是則取得此一工具欄的句柄及名稱,否則等待下一條自攔截程序60發(fā)來的訊息;6.根據(jù)得到的工具欄的句柄及名稱檢索動態(tài)資料庫,取得工具欄的識別碼(ID);7.根據(jù)該工具欄的識別碼在動態(tài)資料庫中檢索,如果有包含有線上即時幫助選項功能,則進行下一步驟,否則返回至載入預定義的動態(tài)資料庫的步驟1;8.根據(jù)游標的位置取得工具欄的位置;9.在該工具欄之旁建立一個幫助(ToolTip)窗口,在此一幫助窗口中的每一個幫助項目對應(yīng)于一個幫助項識別碼(ID);10.當幫助(ToolTip)窗口中的某一幫助項目(如播放圖形的按鈕)被選取時,取得該幫助項目的識別碼(ID);11.檢索該動態(tài)資料庫,找出對應(yīng)的多媒體的控制項;12.調(diào)用一多媒體播放處理模塊處理該多媒體控制項。
本發(fā)明提供了一種對Windows系列操作系統(tǒng)的應(yīng)用程序中的工具欄進行功能擴充的方法,可以在一電腦系統(tǒng)中,當使用者對工具欄進行操作時,擴充工具欄的功能,例如添加,修改,替換,刪除某些選項按鈕等等。例如,利用本發(fā)明可以實現(xiàn)對工具欄的即時漢化(日化,韓化等等),并且不破壞工具欄原有的功能;利用本發(fā)明還可以實現(xiàn)多媒體的線上即時幫助功能,當使用者將游標移到工具欄上的某一選項按鈕時,利用影像聲音等多媒體的播放方式向使用者講解該工具欄上某一選項按鈕的功能等等。
權(quán)利要求
1.一種工具欄功能的擴充方法,應(yīng)用于一電腦系統(tǒng)的視窗作業(yè)(Windows)環(huán)境中,用于提供一種在操作工具欄之時可以擴充工具欄的功能的方法,其特征是該工具欄功能的擴充方法包括有用程序的相關(guān)資料;啟動并初始化一攔截程序和監(jiān)控方式,用以監(jiān)控并且攔截該視窗作業(yè)系統(tǒng)的訊息循環(huán)隊列中的訊息;取得該訊息中有關(guān)工具欄的操作資料;以及根據(jù)該操作資料檢索該動態(tài)資料庫,取得用以擴充該工具欄功能所需的功能擴充資料,并且處理該功能擴充資料完成該工具欄的功能擴充。
2.如權(quán)利要求1所述的工具欄功能的擴充方法,其特征是載入該動態(tài)資料庫的步驟,更包括有定義一共享資料段的步驟。
3.如權(quán)利要求1所述的工具欄功能的擴充方法,其特征是該動態(tài)資料庫記錄有該應(yīng)用程序之中有多少個菜單,多少個工具欄,每個菜單有多少個子項,每個該工具欄有多少個圖形按鈕,每個菜單的名稱與標示(ID)與每個該工具欄的名稱與標示(ID),以及用于擴充功能的相關(guān)資料項等,以便提供功能擴充處理模塊70進行工具欄的功能擴充處理時所需的資料。
4.如權(quán)利要求1所述的工具欄功能的擴充方法,其特征是該工具欄的操作資料包括有當前彈出的該工具欄的句柄(handel),當前彈出的該工具欄的名稱,與游標的位置。
5.如權(quán)利要求1所述的工具欄功能的擴充方法,其特征是取得有關(guān)該工具欄的操作資料的步驟還包括有判斷該攔截程序攔截的該訊息是否為需要監(jiān)視的窗口類,如果不是則等待下一條自該攔截程序攔截的訊息,否則進行下一步驟;判斷前述的窗口類訊息是否為該工具欄的宿主窗口,如果不是則等待自該攔截程序攔截的下一條訊息,否則進行下一步驟;以及取得該工具欄的操作資料。
6.如權(quán)利要求1所述的工具欄功能的擴充方法,其特征是取得所需的該功能擴充資料,并且處理該功能擴充資料完成該工具欄的功能擴充的步驟包括有判斷該工具欄是否為需要擴充功能的工具欄,如果不是,則返回至該載入預定義的動態(tài)資料庫的步驟,否則顯示一個擴充功能的提示;檢索該動態(tài)資料庫,取得該工具欄的識別碼;根據(jù)取得的該工具欄識別碼,從該動態(tài)資料庫中檢索取得對應(yīng)的資料段的資料識別碼;以及根據(jù)取得的該資料識別碼,從該動態(tài)資料庫檢索取得用以擴充該工具欄功能所需的功能擴充資料,并且處理該功能擴充資料完成該工具欄的功能擴充。
全文摘要
一種工具欄(Toolbar)功能的擴充方法,應(yīng)用于電腦系統(tǒng)中,用于提供一種在操作工具欄之時可以擴充工具欄的功能(例如添加,修改,替換,刪除某些按鈕等等)的方法。利用攔截程序從作業(yè)系統(tǒng)(OS)的訊息隊列(Massage queue)中攔截工具欄的操作資料,再根據(jù)所獲得的操作資料自一動態(tài)資料庫中檢索以取得所需的資料,用于擴充工具欄中相應(yīng)操作的功能,既不影響到原有工具欄的功能,更可以擴充原有工具欄所不具備的功能,例如:提供工具欄的即時漢化或是以多媒體的顯示方式提供求助功能等等。
文檔編號G06F9/318GK1310384SQ0010237
公開日2001年8月29日 申請日期2000年2月21日 優(yōu)先權(quán)日2000年2月21日
發(fā)明者林光信, 宋建福, 王學武 申請人:英業(yè)達股份有限公司