專利名稱:一種根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)軟件中的智能判斷方法,特別是涉及一種可以使Windows CE系統(tǒng)中的應(yīng)用程序在執(zhí)行時(shí)根據(jù)資源狀態(tài)自動(dòng)調(diào)整程序模塊功能的方法。
背景技術(shù):
現(xiàn)在的應(yīng)用程序都致力于解決易用性問(wèn)題,在程序安裝過(guò)程中,都盡量采取向?qū)У姆绞?,以方便用戶的使用。但?dāng)安裝程序?qū)⒅鞒绦蚝拖鄳?yīng)資源安裝到指定位置后,一旦用戶的機(jī)器中的文件結(jié)構(gòu)發(fā)生了不可預(yù)知的變化,應(yīng)用程序往往無(wú)法顯示通知用戶,也無(wú)法對(duì)用戶的操作給出相應(yīng)的指引,給用戶的操作帶來(lái)了很大的不便。
現(xiàn)有的部分程序也有判斷資源狀態(tài)的能力,但是其僅僅針對(duì)程序整體,并不能針對(duì)程序元素進(jìn)行相應(yīng)的調(diào)整,更重要的是,它們并沒有將因?yàn)橘Y源而引起的程序元素變化以用戶敏感的方式表現(xiàn)出來(lái),之后也沒有把如何補(bǔ)充這些資源的方法明確顯示給用戶。
還有,在臺(tái)式機(jī)上人們通常使用二態(tài)圖標(biāo)方法來(lái)表示程序元素的狀態(tài),(二態(tài)圖標(biāo)指在程序制作前期用圖像軟件來(lái)生成同一圖標(biāo)資源在不同狀態(tài)時(shí)的版本)但對(duì)于Windows CE這樣對(duì)儲(chǔ)存空間要求極為苛刻的平臺(tái),如果能夠在程序運(yùn)行時(shí)實(shí)時(shí)生成不同狀態(tài)的圖標(biāo)或資源,就可以節(jié)省出將近一半的資源空間,從而帶來(lái)機(jī)器整體性能的提高。
因此,要克服上述現(xiàn)有技術(shù)的缺點(diǎn),最重要的是應(yīng)用程序在執(zhí)行時(shí)自動(dòng)監(jiān)測(cè)相關(guān)資源的狀態(tài),并根據(jù)反饋的信息調(diào)整一些執(zhí)行模塊的顯示狀態(tài)和功能。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提出一種根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊的方法,使得應(yīng)用程序在執(zhí)行時(shí)自動(dòng)監(jiān)測(cè)相關(guān)資源的狀態(tài),并根據(jù)反饋的信息調(diào)整一些執(zhí)行模塊的顯示狀態(tài)和功能。
本發(fā)明所述一種根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,包括如下步驟步驟一、設(shè)定應(yīng)用程序在執(zhí)行過(guò)程中所要檢測(cè)的具體資源,生成配置文件,讀入配置文件;步驟二、掃描指定資源是否存在,如果指定資源存在,則讀入位圖資源,按照預(yù)先設(shè)定功能執(zhí)行程序元素或模塊,轉(zhuǎn)入步驟五;如果指定資源不存在,轉(zhuǎn)入步驟三;步驟三、讀入位圖資源并對(duì)其進(jìn)行圖像轉(zhuǎn)換;步驟四、顯示轉(zhuǎn)換后的圖像,改變并執(zhí)行相應(yīng)程序元素或模塊的功能;步驟五、結(jié)束。
在掃描指定資源之前,還包括如下確定程序路徑的步驟通過(guò)執(zhí)行當(dāng)前程序獲得當(dāng)前程序的字符串,對(duì)此字符串進(jìn)行相應(yīng)處理后,即可獲得當(dāng)前程序執(zhí)行的位置,根據(jù)配置文件中給定的資源字符串通過(guò)嵌套算法計(jì)算出相關(guān)的資源路徑。
所述掃描的指定資源如果存在,還包括如下的步驟監(jiān)測(cè)系統(tǒng)文件結(jié)構(gòu)是否產(chǎn)生變化,一旦有變化則根據(jù)配置文件進(jìn)行掃描;判斷指定的資源是否發(fā)生了改變,如果沒有改變,則繼續(xù)監(jiān)視,如果發(fā)生了改變,則轉(zhuǎn)入步驟三。
所述的步驟三中,對(duì)位圖資源進(jìn)行圖像轉(zhuǎn)換包括如下步驟
根據(jù)源位圖的大小,開辟相同大小的位圖緩沖區(qū)DIBSection;生成與源位圖的設(shè)備上下文DC(Device Context)兼容的DC,然后把DIBSection選擇進(jìn)去,把源位圖的內(nèi)容拷貝進(jìn)去;從DIBSection的第一個(gè)像素開始一直到最后一個(gè)像素做下面的循環(huán)1)把一個(gè)像素的R,G,B三個(gè)值通過(guò)位移獲得;2)根據(jù)灰度公式Grayscale=0.3R+0.6G+0.1B得到這個(gè)像素的灰度值;3)把灰度數(shù)值賦給位圖;把合成后的灰度位圖拷貝到源位圖中,轉(zhuǎn)換結(jié)束。
本發(fā)明所述方法可以在很大程度上實(shí)現(xiàn)程序的自動(dòng)調(diào)節(jié),為了得到最大的靈活性,在程序外部制定所需的資源,這樣可以在不對(duì)程序進(jìn)行任何改動(dòng)的情況下,方便地更改程序需要判斷的程序元素,甚至當(dāng)機(jī)器插入一些外部?jī)?chǔ)存設(shè)備時(shí),比如CF、SD卡或USB硬盤等,應(yīng)用程序也可以根據(jù)其中是否含有所需的資源(在外部制定時(shí)確認(rèn))來(lái)改變程序元素或模塊的功能。
圖1為本發(fā)明所述方法的流程示意圖;圖2為本發(fā)明所述方法步驟三對(duì)位圖資源進(jìn)行圖像轉(zhuǎn)換的流程示意圖;圖3為本發(fā)明一實(shí)施例解決分批制作Rom安裝包的流程示意圖。
具體實(shí)施例方式
圖1為本發(fā)明所述方法的流程示意圖,如圖1所示,本發(fā)明所述方法的流程包括步驟一、設(shè)定應(yīng)用程序在執(zhí)行過(guò)程中所要檢測(cè)的具體資源,生成配置文件,讀入配置文件;步驟二、掃描指定資源是否存在,如果指定資源存在,則讀入位圖資源,按照預(yù)先設(shè)定功能執(zhí)行程序元素或模塊,轉(zhuǎn)入步驟五;如果指定資源不存在,轉(zhuǎn)入步驟三;步驟三、讀入位圖資源并對(duì)其置入圖像轉(zhuǎn)換函數(shù)進(jìn)行圖像轉(zhuǎn)換;步驟四、顯示轉(zhuǎn)換后的圖像,改變并執(zhí)行相應(yīng)程序元素或模塊的功能;步驟五、結(jié)束。
在實(shí)現(xiàn)圖1的過(guò)程中,程序路徑的位置非常重要,必須得到當(dāng)前程序執(zhí)行的位置,這樣才能對(duì)步驟二所述的程序資源進(jìn)行掃描,由于在Windows CE系統(tǒng)中沒有相對(duì)路徑的概念,需要探測(cè)應(yīng)用程序的執(zhí)行位置,并以此為基準(zhǔn)來(lái)計(jì)算資源文件的路徑位置,從而實(shí)現(xiàn)對(duì)資源文件的動(dòng)態(tài)監(jiān)測(cè)。
例如程序在<\\Legend>下執(zhí)行,通過(guò)執(zhí)行程序即可獲得<\\Legend\\程序名.擴(kuò)展名>的字符串,對(duì)此字符串進(jìn)行相應(yīng)處理后,即可獲得當(dāng)前程序執(zhí)行的位置,這樣就可以根據(jù)配置文件中給定的資源字符串通過(guò)遞歸算法計(jì)算出相關(guān)的資源路徑了;同理還可以對(duì)外部設(shè)備的狀態(tài)進(jìn)行偵測(cè),一旦檢測(cè)到新設(shè)備插入,就可以對(duì)其新引入的資源進(jìn)行功能判斷。
在所述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能方法的步驟三中,讀入位圖資源并將其置入圖像轉(zhuǎn)換函數(shù)也是很重要的一步。原因在于,如果不用技術(shù)處理,即圖像轉(zhuǎn)換的話,想用灰度圖給用戶提示,那需要用圖像處理軟件為源位圖創(chuàng)建另外一張灰度位圖資源,占用了資源空間;而將圖標(biāo)資源通過(guò)位圖灰度置換技術(shù)轉(zhuǎn)換成灰度圖標(biāo),這樣做既會(huì)給用戶明顯的提示,又可以為PocketPC這一類小儲(chǔ)存容量設(shè)備節(jié)約寶貴的資源空間。
圖2為本發(fā)明所述方法步驟三對(duì)位圖資源進(jìn)行圖像轉(zhuǎn)換的流程示意圖;對(duì)位圖資源進(jìn)行圖像轉(zhuǎn)換的流程包括根據(jù)源位圖的大小,開辟相同大小的位圖緩沖區(qū)DIBSection;生成與源位圖的DC(Device Context)兼容的DC,然后把DIBSection選擇進(jìn)去,把源位圖的內(nèi)容拷貝進(jìn)去;從DIBSection的第一個(gè)像素開始一直到最后一個(gè)像素(這些可以從一個(gè)生成DIBSection的時(shí)候得到)做下面的循環(huán)1)判斷是否到了位圖的末尾,如果是,則轉(zhuǎn)步驟6),如果不是,則執(zhí)行步驟2);2)獲取當(dāng)前像素的R,G,B三個(gè)值,通過(guò)位移獲得;3)根據(jù)灰度公式Grayscale=R*0.3+G*0.6+B*0.1得到這個(gè)像素的灰度值;4)把灰度數(shù)值賦給位圖;5)把像素指示到下一個(gè)像素,轉(zhuǎn)到步驟1);6)退出。
根據(jù)圖1所述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,在步驟二中,如果所掃描的指定資源存在,還包括如下的步驟監(jiān)測(cè)系統(tǒng)文件結(jié)構(gòu)是否產(chǎn)生變化,一旦有變化則根據(jù)配置文件進(jìn)行掃描;判斷指定的資源是否發(fā)生了改變,如果沒有改變,則繼續(xù)監(jiān)視,如果發(fā)生了改變,則轉(zhuǎn)入步驟三。
以下通過(guò)一個(gè)具體實(shí)施例圖3,具體說(shuō)明本發(fā)明所述方法。例如在研發(fā)工作中需要做一個(gè)Rom文件讀取程序,并且要在用戶界面中將不同的Rom用相應(yīng)的圖標(biāo)表示出來(lái),因?yàn)槌绦蛞蛛A段為用戶提供Rom,同時(shí)用戶也可能要求將Rom改變,所以無(wú)法固化在最初設(shè)計(jì)的程序中。
根據(jù)前述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,在不改動(dòng)主程序的前提下,可以成功解決分批制作Rom安裝包的工作。
如圖3所示,解決分批制作Rom安裝包的流程包括如下步驟針對(duì)Rom文件的特點(diǎn)編寫了相應(yīng)的資源和路徑的配置文件,備份修復(fù)文件;然后在程序中編寫了掃描指定資源,對(duì)指定資源進(jìn)行掃描;監(jiān)測(cè)系統(tǒng)文件是否出現(xiàn)變化;如果未發(fā)生變化,則正常處理此文件,如果發(fā)生變化,則進(jìn)行位圖灰度轉(zhuǎn)換;最后根據(jù)Rom狀態(tài)編寫了相應(yīng)的用戶使用向?qū)?,?dāng)監(jiān)測(cè)到Rom狀態(tài)發(fā)生變化后,將彈出詢問(wèn)用戶是否進(jìn)行自動(dòng)修復(fù)的對(duì)話框,如果用戶選擇自動(dòng)修復(fù),程序?qū)⒏鶕?jù)已經(jīng)備份的修復(fù)文件對(duì)程序進(jìn)行修復(fù)。
本實(shí)施例采用本發(fā)明所述方法,就可以將一個(gè)階段內(nèi)用戶所需要的不同的配置文件、圖標(biāo)文件、Rom文件一起打包提供給用戶,使用戶獲得全新的使用模式,并且當(dāng)資源發(fā)生改變時(shí),能夠及時(shí)偵測(cè)到并動(dòng)態(tài)地改變模塊功能和使用方式,不用對(duì)程序版本進(jìn)行維護(hù)就能實(shí)現(xiàn)功能的更新。
特別是在圖標(biāo)資源眾多的情況下,通過(guò)位圖灰度置換技術(shù),避免了傳統(tǒng)的二態(tài)圖標(biāo)方法,節(jié)約了近一半的圖標(biāo)資源占用空間。
最后所應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,其特征在于包括如下步驟步驟一、設(shè)定應(yīng)用程序在執(zhí)行過(guò)程中所要檢測(cè)的具體資源,生成配置文件,讀入配置文件;步驟二、掃描指定資源是否存在,如果指定資源存在,則讀入位圖資源,按照預(yù)先設(shè)定功能執(zhí)行程序元素或模塊,轉(zhuǎn)入步驟五;如果指定資源不存在,轉(zhuǎn)入步驟三;步驟三、讀入位圖資源并對(duì)其置入圖像轉(zhuǎn)換函數(shù)進(jìn)行圖像轉(zhuǎn)換;步驟四、顯示轉(zhuǎn)換后的圖像,改變并執(zhí)行相應(yīng)程序元素或模塊的功能;步驟五、結(jié)束。
2.根據(jù)權(quán)利要求1所述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,其特征在于在掃描指定資源之前,還包括如下確定程序路徑的步驟通過(guò)執(zhí)行當(dāng)前程序獲得當(dāng)前程序的字符串,對(duì)此字符串進(jìn)行相應(yīng)處理后,即可獲得當(dāng)前程序執(zhí)行的位置,根據(jù)配置文件中給定的資源字符串通過(guò)遞歸算法計(jì)算出相關(guān)的資源路徑。
3.根據(jù)權(quán)利要求1或2所述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,其特征在于在步驟二中,所述掃描的指定資源如果存在,還包括如下的步驟監(jiān)測(cè)系統(tǒng)文件結(jié)構(gòu)是否產(chǎn)生變化,一旦有變化則根據(jù)配置文件進(jìn)行掃描;判斷指定的資源是否發(fā)生了改變,如果沒有改變,則繼續(xù)監(jiān)視,如果發(fā)生了改變,則轉(zhuǎn)入步驟三。
4.根據(jù)權(quán)利要求1或2所述的根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,其特征在于在步驟三中,對(duì)位圖資源進(jìn)行圖像轉(zhuǎn)換包括如下步驟根據(jù)源位圖的大小,開辟相同大小的位圖緩沖區(qū)DIBSection;生成與源位圖的設(shè)備上下文DC(Device Context)兼容的DC,然后把DIBSection選擇進(jìn)去,把源位圖的內(nèi)容拷貝進(jìn)去;從DIBSection的第一個(gè)像素開始一直到最后一個(gè)像素做下面的循環(huán)1)判斷是否到了位圖的末尾,如果是,則轉(zhuǎn)步驟6)如果不是,則執(zhí)行步驟2);2)獲取當(dāng)前像素的R,G,B三個(gè)值,通過(guò)位移獲得;3)根據(jù)灰度公式Grayscale=R*0.3+G*0.6+B*0.1得到這個(gè)像素的灰度值;4)把灰度數(shù)值賦給位圖;5)把像素指示到下一個(gè)像素,轉(zhuǎn)到步驟1);6)退出。
全文摘要
本發(fā)明揭示了一種根據(jù)資源狀態(tài)動(dòng)態(tài)調(diào)整程序模塊功能的方法,其實(shí)現(xiàn)包括如下步驟首先,設(shè)定應(yīng)用程序在執(zhí)行過(guò)程中所要檢測(cè)的具體資源,生成并讀入配置文件;接著,掃描指定資源是否存在,如果存在,則讀入位圖資源,按照預(yù)先設(shè)定功能執(zhí)行程序元素或模塊,執(zhí)行后結(jié)束;如果不存在,則讀入位圖資源并對(duì)其進(jìn)行圖像轉(zhuǎn)換;然后,顯示轉(zhuǎn)換后的圖像,改變并執(zhí)行相應(yīng)程序元素或模塊的功能,結(jié)束。利用本發(fā)明所述方法可以在很大程度上實(shí)現(xiàn)程序的自動(dòng)調(diào)節(jié),可以在不對(duì)程序進(jìn)行任何改動(dòng)的情況下,方便地更改程序需要判斷的程序元素,甚至當(dāng)機(jī)器插入一些外部?jī)?chǔ)存設(shè)備時(shí),應(yīng)用程序也可以根據(jù)其中是否含有所需的資源來(lái)改變程序元素或模塊的功能。
文檔編號(hào)G06F11/36GK1504889SQ0214918
公開日2004年6月16日 申請(qǐng)日期2002年11月28日 優(yōu)先權(quán)日2002年11月28日
發(fā)明者張乃雷, 何君艦 申請(qǐng)人:聯(lián)想(北京)有限公司