專(zhuān)利名稱:一種數(shù)據(jù)處理設(shè)備上的聲音管理模塊及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理設(shè)備,尤其涉及一種數(shù)據(jù)處理設(shè)備上的聲音管理模塊和方 法。
背景技術(shù):
隨著計(jì)算機(jī)的普及以及多媒體技術(shù)的不斷發(fā)展,人們使用計(jì)算機(jī)等數(shù)據(jù)處理設(shè)備 處理日常事物會(huì)越來(lái)越普遍。
在使用計(jì)算機(jī)的過(guò)程中,一般都會(huì)同時(shí)運(yùn)行若干個(gè)程序,比如一邊進(jìn)行文字編輯 一邊聽(tīng)音樂(lè),又如一邊瀏覽網(wǎng)頁(yè)一邊收聽(tīng)廣播節(jié)目,還如一邊看電影一邊即時(shí)聊天等等。不 同程序運(yùn)行過(guò)程中,很可能出現(xiàn)同時(shí)發(fā)出聲音的情形,比如收聽(tīng)廣播節(jié)目的時(shí)候,網(wǎng)頁(yè)也會(huì) 不時(shí)地發(fā)出一些聲音。如果同時(shí)運(yùn)行的程序越多,則越有可能出現(xiàn)這種聲音互相干擾的情 況。
有時(shí)候,雖然同時(shí)運(yùn)行多個(gè)程序,但是不希望其中的一些程序有可能發(fā)出的聲音 來(lái)打擾另一些程序所發(fā)出的聲音,比如瀏覽網(wǎng)頁(yè)時(shí)不希望網(wǎng)頁(yè)可能發(fā)出的聲音來(lái)打擾同時(shí) 收聽(tīng)的廣播節(jié)目。因此有必要對(duì)處于運(yùn)行狀態(tài)的多個(gè)程序的聲音進(jìn)行管理。
現(xiàn)有技術(shù)中,雖然有些數(shù)據(jù)處理設(shè)備通過(guò)其操作系統(tǒng),可以對(duì)聲音進(jìn)行管理,但是 這種管理方式是程序第一次發(fā)出聲音之后,用戶才能對(duì)該程序的聲音進(jìn)行管理。
在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下問(wèn)題
(1)建立在第一次發(fā)出聲音之后,再對(duì)發(fā)出該聲音的程序進(jìn)行管理的方式,該第一 次發(fā)出的聲音,仍然會(huì)影響到用戶;
(2)上述管理功能的用戶設(shè)置界面隱藏很深,不容易被用戶發(fā)現(xiàn),而且操作起來(lái)也 比較麻煩;
(3)需要實(shí)現(xiàn)聲音管理功能,就必須使用該操作系統(tǒng),而且還無(wú)法兼容該操作系統(tǒng) 中的較低版本。
綜上所述,有必要提供改進(jìn)的技術(shù)手段,來(lái)方便且切實(shí)可靠地管理處于運(yùn)行狀態(tài) 的若干程序可能發(fā)出的聲音。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是在于需要提供一種數(shù)據(jù)處理設(shè)備上的聲音管理模 塊及方法,以對(duì)處于運(yùn)行狀態(tài)的程序的聲音進(jìn)行管理。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備上的聲音管理模塊,包 括
第一設(shè)置模塊,用于設(shè)置一聲音攔截列表,包含有程序標(biāo)識(shí),所述聲音攔截列表用 于對(duì)程序運(yùn)行時(shí)是否允許發(fā)出聲音進(jìn)行編輯;
寫(xiě)入模塊,與所述第一設(shè)置模塊相連,用于將所述程序標(biāo)識(shí)寫(xiě)入所述數(shù)據(jù)處理設(shè) 備的配置文件中;
第二設(shè)置模塊,與所述寫(xiě)入模塊相連,用于設(shè)置一函數(shù),所述函數(shù)用于根據(jù)所述配 置文件獲取所述聲音攔截列表;
關(guān)聯(lián)模塊,與所述第二設(shè)置模塊相連,用于對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處 于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián);
執(zhí)行模塊,與所述關(guān)聯(lián)模塊相連,用于遍歷所述處于運(yùn)行狀態(tài)的程序,并根據(jù)所述 函數(shù)對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
優(yōu)選地,所述第一設(shè)置模塊通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消息與所述動(dòng) 態(tài)鏈接庫(kù)進(jìn)行通信,維護(hù)所述聲音攔截列表。
優(yōu)選地,所述關(guān)聯(lián)模塊包括
封裝子模塊,與所述第二設(shè)置模塊相連,用于將所述函數(shù)封裝為一動(dòng)態(tài)鏈接庫(kù);
注入子模塊,與所述封裝子模塊及執(zhí)行模塊相連,用于將所述動(dòng)態(tài)鏈接庫(kù)注入到 所述處于運(yùn)行狀態(tài)的程序的進(jìn)程中。
優(yōu)選地,所述注入子模塊通過(guò)創(chuàng)建遠(yuǎn)程線程函數(shù)或者創(chuàng)建全局鉤子函數(shù),將所述 動(dòng)態(tài)鏈接庫(kù)注入到所述進(jìn)程中。
優(yōu)選地,所述執(zhí)行模塊包括
修改子模塊,與所述注入子模塊相連,用于遍歷所述處于運(yùn)行狀態(tài)的程序的輸入 地址表,將所述處于運(yùn)行狀態(tài)的程序用于發(fā)聲的函數(shù)修改為所述動(dòng)態(tài)鏈接庫(kù)的地址;
處理子模塊,與所述修改子模塊相連,用于根據(jù)所述動(dòng)態(tài)鏈接庫(kù)的地址,對(duì)所述處 于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
優(yōu)選地,所述處理子模塊對(duì)允許發(fā)出聲音的程序,調(diào)用所述數(shù)據(jù)處理設(shè)備操作系 統(tǒng)的用于發(fā)出聲音的應(yīng)用程序接口以發(fā)出聲音;對(duì)不允許發(fā)出聲音的程序,不調(diào)用所述數(shù) 據(jù)處理設(shè)備操作系統(tǒng)的用于發(fā)出聲音的應(yīng)用程序接口。
為了解決上述技術(shù)問(wèn)題,本發(fā)明還提供了一種數(shù)據(jù)處理設(shè)備上的聲音管理方法, 包括
設(shè)置一聲音攔截列表,包含有程序標(biāo)識(shí),所述聲音攔截列表用于對(duì)程序運(yùn)行時(shí)是 否允許發(fā)出聲音進(jìn)行編輯;
將所述程序標(biāo)識(shí)寫(xiě)入所述數(shù)據(jù)處理設(shè)備的配置文件中;
設(shè)置一函數(shù),所述函數(shù)用于根據(jù)所述配置文件獲取所述聲音攔截列表;
對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián);
遍歷所述處于運(yùn)行狀態(tài)的程序,根據(jù)所述函數(shù)對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲 請(qǐng)求進(jìn)行處理。
優(yōu)選地,所述聲音攔截列表包含有運(yùn)行時(shí)不允許發(fā)出聲音的程序的程序標(biāo)識(shí)。
優(yōu)選地,所述聲音攔截列表進(jìn)一步包含有運(yùn)行時(shí)允許發(fā)出聲音的程序的程序標(biāo) 識(shí)。
優(yōu)選地,對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián)的步 驟,包括
將所述函數(shù)封裝為一動(dòng)態(tài)鏈接庫(kù);
將所述動(dòng)態(tài)鏈接庫(kù)注入到所述處于運(yùn)行狀態(tài)的程序的進(jìn)程中。
優(yōu)選地,將所述動(dòng)態(tài)鏈接庫(kù)注入到所述進(jìn)程中的步驟,包括
通過(guò)創(chuàng)建遠(yuǎn)程線程函數(shù)或者創(chuàng)建全局鉤子函數(shù),將所述動(dòng)態(tài)鏈接庫(kù)注入到所述進(jìn) 程中。
優(yōu)選地,遍歷所述處于運(yùn)行狀態(tài)的程序,根據(jù)所述函數(shù)對(duì)所述處于運(yùn)行狀態(tài)的程 序的發(fā)聲請(qǐng)求進(jìn)行處理的步驟,包括
遍歷所述處于運(yùn)行狀態(tài)的程序的輸入地址表,將所述處于運(yùn)行狀態(tài)的程序用于發(fā) 聲的函數(shù)修改為所述動(dòng)態(tài)鏈接庫(kù)的地址;
根據(jù)所述動(dòng)態(tài)鏈接庫(kù)的地址,對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
優(yōu)選地,對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理的步驟,包括
對(duì)允許發(fā)出聲音的程序,調(diào)用所述數(shù)據(jù)處理設(shè)備操作系統(tǒng)的用于發(fā)出聲音的應(yīng)用 程序接口以發(fā)出聲音;
對(duì)不允許發(fā)出聲音的程序,不調(diào)用所述數(shù)據(jù)處理設(shè)備操作系統(tǒng)的用于發(fā)出聲音的 應(yīng)用程序接口。
優(yōu)選地,通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消息與所述動(dòng)態(tài)鏈接庫(kù)進(jìn)行通信, 維護(hù)所述聲音攔截列表。
本發(fā)明對(duì)數(shù)據(jù)處理設(shè)備上運(yùn)行的程序的發(fā)聲需求進(jìn)行管理,如果允許該軟件發(fā)出 聲音,則調(diào)用數(shù)據(jù)處理設(shè)備用于發(fā)出聲音的應(yīng)用程序接口,否則該軟件不會(huì)調(diào)用操作系統(tǒng) 用于發(fā)出聲音的應(yīng)用程序接口。與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案方便用戶在使用時(shí)根據(jù) 需要,靈活地管理聲音播放,提高了用戶體驗(yàn)度。
圖1是本發(fā)明數(shù)據(jù)處理設(shè)備的聲音管理方法實(shí)施例的步驟示意圖2是本發(fā)明聲音管理方法在應(yīng)用時(shí)的流程示意圖3是本發(fā)明數(shù)據(jù)處理設(shè)備的聲音管理系統(tǒng)實(shí)施例的組成示意圖。
具體實(shí)施方式
以下將結(jié)合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用 技術(shù)手段來(lái)解決技術(shù)問(wèn)題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。
圖1為本發(fā)明中數(shù)據(jù)處理設(shè)備的聲音管理方法一實(shí)施例的步驟示意圖。如圖1所 示,該方法實(shí)施例主要包括如下步驟
步驟S110,設(shè)置一聲音攔截列表,該列表包含有程序標(biāo)識(shí),用于對(duì)程序運(yùn)行時(shí)是否 允許發(fā)出聲音進(jìn)行編輯;其中該編輯包括該聲音攔截列表的初始設(shè)置和運(yùn)行過(guò)程中對(duì)該聲 音攔截列表的維護(hù)等;
根據(jù)該聲音攔截列表,可以判斷數(shù)據(jù)處理設(shè)備上安裝的程序中,哪些程序在運(yùn)行 時(shí)允許調(diào)用用于發(fā)出聲音的應(yīng)用程序接口(API),哪些程序在運(yùn)行時(shí)不允許調(diào)用用于發(fā)出 聲音的API ;在本實(shí)施例中,該聲音攔截列表中僅有運(yùn)行時(shí)不允許發(fā)出聲音的程序的標(biāo)識(shí); 在其他實(shí)施例中,該聲音攔截列表還可以包含運(yùn)行時(shí)允許發(fā)出聲音的程序的標(biāo)識(shí);前述的 維護(hù),包括增加、修改或者刪除聲音攔截列表中的程序標(biāo)識(shí),也即可以根據(jù)需求,選擇運(yùn)行 時(shí)不發(fā)出聲音的程序;
步驟S120,將該聲音攔截列表中的程序標(biāo)識(shí)寫(xiě)入數(shù)據(jù)處理設(shè)備的配置文件中;
步驟S130,設(shè)置一函數(shù),本實(shí)施例中是設(shè)置一自定義函數(shù),該自定義函數(shù)用于根據(jù) 該配置文件獲取該聲音攔截列表;具體地,根據(jù)該配置文件中的程序標(biāo)識(shí),獲得該聲音攔截 列表;本步驟中設(shè)置函數(shù),在其他實(shí)施例中也可以根據(jù)系統(tǒng)的其他函數(shù)來(lái)進(jìn)行該設(shè)置,所設(shè) 置的函數(shù)只要能夠?qū)崿F(xiàn)本發(fā)明中的功能即可,本發(fā)明并不以此為限;
步驟S140,對(duì)該自定義函數(shù)與數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián);其 中,本步驟又可以分為步驟S141及步驟S142
步驟S141,將該自定義函數(shù)封裝為一動(dòng)態(tài)鏈接庫(kù)(DLL),本實(shí)施例中,該DLL為一 自定義的DLL,在其他實(shí)施例中,也可以根據(jù)系統(tǒng)已有的DLL來(lái)進(jìn)行該封裝;封裝所獲得的 DLL只要能夠?qū)崿F(xiàn)本發(fā)明功能即可,本發(fā)明并不以此為限;
步驟S142,該數(shù)據(jù)處理設(shè)備上的程序運(yùn)行時(shí),通過(guò)創(chuàng)建遠(yuǎn)程線程 (CreateRemoteThread)函數(shù),將該自定義DLL注入到該些處于運(yùn)行狀態(tài)的程序的進(jìn)程中, 完成前述該自定義函數(shù)與處于運(yùn)行狀態(tài)的程序的關(guān)聯(lián)操作;當(dāng)然本步驟也可以通過(guò)創(chuàng)建其 它函數(shù)來(lái)完成該自定義DLL的注入,比如在其它實(shí)施例中可以是創(chuàng)建全局鉤子函數(shù),創(chuàng)建 后該函數(shù)將會(huì)把該自定義DLL注入到操作系統(tǒng)的所有進(jìn)程中;
步驟S150,遍歷處于運(yùn)行狀態(tài)的程序,根據(jù)該函數(shù)對(duì)處于運(yùn)行狀態(tài)的程序的發(fā)聲 請(qǐng)求進(jìn)行處理;具體地,本步驟又可分為步驟S151及步驟S1521
步驟S151,遍歷該些處于運(yùn)行狀態(tài)的程序的輸入地址表(Import Address Table, IAT),將該些處于運(yùn)行狀態(tài)的程序用于發(fā)聲的函數(shù)的地址修改為該自定義DLL的地址;
步驟S152,根據(jù)該自定義DLL的地址,對(duì)該些處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn) 行處理,具體地,對(duì)允許發(fā)出聲音的程序,調(diào)用該數(shù)據(jù)處理設(shè)備操作系統(tǒng)用于發(fā)出聲音的應(yīng) 用程序接口以發(fā)出聲音,對(duì)不允許發(fā)聲的程序,阻止該程序調(diào)用操作系統(tǒng)用于發(fā)出聲音的 應(yīng)用程序接口,達(dá)到屏蔽聲音的目的。
在維護(hù)前述的聲音攔截列表時(shí),可以通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消息 與該自定義的DLL進(jìn)行通信。
步驟SllO中,該聲音攔截列表由用戶自定義編輯,并可以根據(jù)應(yīng)用場(chǎng)景的不同, 可以分為多種管理模式,比如包括靜音模式、全屏模式、辦公模式以及暫停模式,其中
靜音模式,數(shù)據(jù)處理設(shè)備安裝的所有軟件運(yùn)行時(shí)都不允許發(fā)聲;
全屏模式,所設(shè)置的管理程序,實(shí)時(shí)監(jiān)控桌面窗口的運(yùn)行狀態(tài)(比如周期性地枚 舉當(dāng)前桌面的窗口),如果發(fā)現(xiàn)有窗口處于全屏狀態(tài),則查找到該窗口所屬的程序,僅允許 該程序發(fā)出聲音,并且屏蔽其他程序發(fā)出的聲音;
辦公模式,將數(shù)據(jù)處理設(shè)備所安裝的軟件按照功能進(jìn)行分類(lèi),劃分為工作軟件、娛 樂(lè)軟件等等,屏蔽娛樂(lè)軟件的聲音,允許工作軟件發(fā)出聲音;
暫停模式,不屏蔽任何軟件的聲音。
圖2為本發(fā)明聲音管理方法在應(yīng)用時(shí)的流程示意圖。結(jié)合圖1所示方法實(shí)施例, 圖2所示的該應(yīng)用主要包括如下步驟
步驟S210,程序在運(yùn)行過(guò)程中需要發(fā)出聲音;
步驟S220,程序調(diào)用注入在自身進(jìn)程中的自定義DLL ;
步驟S230,根據(jù)該自定義DLL判斷是否允許程序發(fā)出聲音,是則轉(zhuǎn)步驟S240,否則 轉(zhuǎn)步驟S250 ;
步驟S240,調(diào)用操作系統(tǒng)用于發(fā)出聲音的應(yīng)用程序接口并發(fā)出聲音;
步驟S250,阻止該程序調(diào)用操作系統(tǒng)用于發(fā)出聲音的應(yīng)用程序接口。
圖3為本發(fā)明聲音管理系統(tǒng)一實(shí)施例的組成示意圖。結(jié)合圖1所示的方法實(shí)施例 以及圖2所示的應(yīng)用流程,該系統(tǒng)實(shí)施例主要包括第一設(shè)置模塊310、寫(xiě)入模塊320、第二設(shè) 置模塊330、關(guān)聯(lián)模塊340及執(zhí)行模塊350,其中
第一設(shè)置模塊310,用于設(shè)置一聲音攔截列表,該列表包含有程序標(biāo)識(shí),該列表用 于對(duì)程序運(yùn)行時(shí)是否允許發(fā)出聲音進(jìn)行設(shè)置;根據(jù)該聲音攔截列表,可以判斷數(shù)據(jù)處理設(shè) 備上安裝的程序中,哪些程序在運(yùn)行時(shí)允許調(diào)用用于發(fā)出聲音的應(yīng)用程序接口(API),哪些 程序在運(yùn)行時(shí)不允許調(diào)用用于發(fā)出聲音的API ;在本實(shí)施例中,該聲音攔截列表中僅有運(yùn) 行時(shí)不允許發(fā)出聲音的程序的標(biāo)識(shí);在其他系統(tǒng)實(shí)施例中,該聲音攔截列表還可以包含運(yùn) 行時(shí)允許發(fā)出聲音的程序的標(biāo)識(shí);前述的維護(hù),包括增加、修改或者刪除聲音攔截列表中的 程序標(biāo)識(shí),也即可以根據(jù)需求,選擇運(yùn)行時(shí)不發(fā)出聲音的程序;
寫(xiě)入模塊320,與該第一設(shè)置模塊310相連,用于將該聲音攔截列表中的程序標(biāo)識(shí) 寫(xiě)入數(shù)據(jù)處理設(shè)備的配置文件中;
第二設(shè)置模塊330,與該寫(xiě)入模塊320相連,用于設(shè)置一函數(shù),本實(shí)施例中是設(shè)置 一自定義函數(shù),該自定義函數(shù)用于根據(jù)該配置文件,獲取該聲音攔截列表;具體地,該自定 義函數(shù)根據(jù)該配置文件中程序標(biāo)識(shí),獲得該聲音攔截列表;第二設(shè)置模塊330設(shè)置函數(shù),在 其他實(shí)施例中也可以根據(jù)系統(tǒng)的其他函數(shù)來(lái)進(jìn)行該設(shè)置,所設(shè)置的函數(shù)只要能夠?qū)崿F(xiàn)本發(fā) 明中的功能即可,本發(fā)明并不以此為限;
關(guān)聯(lián)模塊340,與該第二設(shè)置模塊330相連,用于對(duì)該自定義函數(shù)與數(shù)據(jù)處理設(shè)備 上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián);其中,關(guān)聯(lián)模塊340具體分為了封裝子模塊341和注入子 模塊342
封裝子模塊341,與該第二設(shè)置模塊330相連,用于將該自定義函數(shù)封裝為一 DLL ; 本實(shí)施例中,該DLL為一自定義的DLL,在其他實(shí)施例中,也可以根據(jù)系統(tǒng)已有的DLL來(lái)進(jìn)行 該封裝;封裝所獲得的DLL只要能夠?qū)崿F(xiàn)本發(fā)明功能即可,本發(fā)明并不以此為限;
注入子模塊342,與該封裝子模塊340相連,用于該數(shù)據(jù)處理設(shè)備上的程序運(yùn)行 時(shí),通過(guò)CreateRemoteThread函數(shù),將該自定義DLL注入到該些處于運(yùn)行狀態(tài)的程序的進(jìn) 程中,完成前述該自定義函數(shù)與處于運(yùn)行狀態(tài)的程序的關(guān)聯(lián)操作;當(dāng)然注入子模塊342也 可以通過(guò)創(chuàng)建其它函數(shù)來(lái)完成該自定義DLL的注入,比如在其它實(shí)施例中可以是創(chuàng)建全局 鉤子函數(shù),創(chuàng)建后該函數(shù)將會(huì)把該自定義DLL注入到操作系統(tǒng)的所有進(jìn)程中;
執(zhí)行模塊350,與該關(guān)聯(lián)模塊340相連,用于遍歷處于運(yùn)行狀態(tài)的程序,并根據(jù)該 函數(shù)對(duì)處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理;其中,執(zhí)行模塊350具體分為了修改子 模塊352和處理子模塊352
修改子模塊351,與該注入子模塊342相連,用于遍歷該些處于運(yùn)行狀態(tài)的程序的 輸入地址表(Import Address Table,IAT),將該些處于運(yùn)行狀態(tài)的程序用于發(fā)聲的函數(shù)的 地址修改為該自定義DLL的地址;
處理子模塊352,與該修改子模塊351相連,用于根據(jù)該自定義DLL的地址,對(duì)允 許發(fā)出聲音的程序,調(diào)用該數(shù)據(jù)處理設(shè)備操作系統(tǒng)用于發(fā)出聲音的應(yīng)用程序接口以發(fā)出聲 音,對(duì)不允許發(fā)聲的程序,阻止該程序調(diào)用操作系統(tǒng)用于發(fā)出聲音的應(yīng)用程序接口,達(dá)到屏蔽聲音的目的。
上述第一設(shè)置模塊310,還可用于維護(hù)所設(shè)置的該聲音攔截列表,也即該第一設(shè)置 模塊310用于對(duì)該聲音攔截列表進(jìn)行編輯,其中該編輯包括該聲音攔截列表的初始設(shè)置和 運(yùn)行過(guò)程中對(duì)該聲音攔截列表的維護(hù)等;其中該維護(hù)包括增加、修改或者刪除聲音攔截列 表中的程序標(biāo)識(shí);在維護(hù)該聲音攔截列表時(shí),可以通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消 息與該自定義的DLL進(jìn)行通信。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采 用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本 發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化, 但本發(fā)明的專(zhuān)利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種數(shù)據(jù)處理設(shè)備上的聲音管理模塊,其特征在于,包括第一設(shè)置模塊,用于設(shè)置一聲音攔截列表,包含有程序標(biāo)識(shí),所述聲音攔截列表用于對(duì) 程序運(yùn)行時(shí)是否允許發(fā)出聲音進(jìn)行編輯;寫(xiě)入模塊,與所述第一設(shè)置模塊相連,用于將所述程序標(biāo)識(shí)寫(xiě)入所述數(shù)據(jù)處理設(shè)備的 配置文件中;第二設(shè)置模塊,與所述寫(xiě)入模塊相連,用于設(shè)置一函數(shù),所述函數(shù)用于根據(jù)所述配置文 件獲取所述聲音攔截列表;關(guān)聯(lián)模塊,與所述第二設(shè)置模塊相連,用于對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處于運(yùn) 行狀態(tài)的程序進(jìn)行關(guān)聯(lián);執(zhí)行模塊,與所述關(guān)聯(lián)模塊相連,用于遍歷所述處于運(yùn)行狀態(tài)的程序,并根據(jù)所述函數(shù) 對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
2.如權(quán)利要求1所述的模塊,其特征在于所述第一設(shè)置模塊通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消息與所述動(dòng)態(tài)鏈接庫(kù)進(jìn)行 通信,維護(hù)所述聲音攔截列表。
3.如權(quán)利要求1所述的模塊,其特征在于,所述關(guān)聯(lián)模塊包括封裝子模塊,與所述第二設(shè)置模塊相連,用于將所述函數(shù)封裝為一動(dòng)態(tài)鏈接庫(kù); 注入子模塊,與所述封裝子模塊及執(zhí)行模塊相連,用于將所述動(dòng)態(tài)鏈接庫(kù)注入到所述 處于運(yùn)行狀態(tài)的程序的進(jìn)程中。
4.如權(quán)利要求3所述的模塊,其特征在于所述注入子模塊通過(guò)創(chuàng)建遠(yuǎn)程線程函數(shù)或者創(chuàng)建全局鉤子函數(shù),將所述動(dòng)態(tài)鏈接庫(kù)注 入到所述進(jìn)程中。
5.如權(quán)利要求3所述的模塊,其特征在于,所述執(zhí)行模塊包括修改子模塊,與所述注入子模塊相連,用于遍歷所述處于運(yùn)行狀態(tài)的程序的輸入地址 表,將所述處于運(yùn)行狀態(tài)的程序用于發(fā)聲的函數(shù)修改為所述動(dòng)態(tài)鏈接庫(kù)的地址;處理子模塊,與所述修改子模塊相連,用于根據(jù)所述動(dòng)態(tài)鏈接庫(kù)的地址,對(duì)所述處于運(yùn) 行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
6.一種數(shù)據(jù)處理設(shè)備上的聲音管理方法,其特征在于,包括設(shè)置一聲音攔截列表,包含有程序標(biāo)識(shí),所述聲音攔截列表用于對(duì)程序運(yùn)行時(shí)是否允 許發(fā)出聲音進(jìn)行編輯;將所述程序標(biāo)識(shí)寫(xiě)入所述數(shù)據(jù)處理設(shè)備的配置文件中; 設(shè)置一函數(shù),所述函數(shù)用于根據(jù)所述配置文件獲取所述聲音攔截列表; 對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián); 遍歷所述處于運(yùn)行狀態(tài)的程序,根據(jù)所述函數(shù)對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求 進(jìn)行處理。
7.如權(quán)利要求6所述的方法,其特征在于所述聲音攔截列表包含有運(yùn)行時(shí)不允許發(fā)出聲音的程序的程序標(biāo)識(shí)。
8.如權(quán)利要求7所述的方法,其特征在于所述聲音攔截列表進(jìn)一步包含有運(yùn)行時(shí)允許發(fā)出聲音的程序的程序標(biāo)識(shí)。
9.如權(quán)利要求6所述的方法,其特征在于,對(duì)所述函數(shù)與所述數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián)的步驟,包括 將所述函數(shù)封裝為一動(dòng)態(tài)鏈接庫(kù);將所述動(dòng)態(tài)鏈接庫(kù)注入到所述處于運(yùn)行狀態(tài)的程序的進(jìn)程中。
10.如權(quán)利要求9所述的方法,其特征在于,將所述動(dòng)態(tài)鏈接庫(kù)注入到所述進(jìn)程中的步 驟,包括通過(guò)創(chuàng)建遠(yuǎn)程線程函數(shù)或者創(chuàng)建全局鉤子函數(shù),將所述動(dòng)態(tài)鏈接庫(kù)注入到所述進(jìn)程中。
11.如權(quán)利要求9所述的方法,其特征在于,遍歷所述處于運(yùn)行狀態(tài)的程序,根據(jù)所述 函數(shù)對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理的步驟,包括遍歷所述處于運(yùn)行狀態(tài)的程序的輸入地址表,將所述處于運(yùn)行狀態(tài)的程序用于發(fā)聲的 函數(shù)修改為所述動(dòng)態(tài)鏈接庫(kù)的地址;根據(jù)所述動(dòng)態(tài)鏈接庫(kù)的地址,對(duì)所述處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。
12.如權(quán)利要求9所述的方法,其特征在于通過(guò)共享內(nèi)存或者管道,或者通過(guò)系統(tǒng)消息與所述動(dòng)態(tài)鏈接庫(kù)進(jìn)行通信,維護(hù)所述聲 音攔截列表。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)處理設(shè)備上的聲音管理模塊及方法,以對(duì)處于運(yùn)行狀態(tài)的程序的聲音進(jìn)行管理。其中,該聲音管理模塊包括第一設(shè)置模塊,用于設(shè)置一聲音攔截列表,包含有程序標(biāo)識(shí);寫(xiě)入模塊,用于將程序標(biāo)識(shí)寫(xiě)入數(shù)據(jù)處理設(shè)備的配置文件中;第二設(shè)置模塊,函數(shù)用于根據(jù)配置文件獲取聲音攔截列表;關(guān)聯(lián)模塊,用于對(duì)函數(shù)與數(shù)據(jù)處理設(shè)備上處于運(yùn)行狀態(tài)的程序進(jìn)行關(guān)聯(lián);執(zhí)行模塊,用于遍歷處于運(yùn)行狀態(tài)的程序,并根據(jù)函數(shù)對(duì)處于運(yùn)行狀態(tài)的程序的發(fā)聲請(qǐng)求進(jìn)行處理。本發(fā)明技術(shù)方案方便用戶在使用時(shí)根據(jù)需要,靈活地管理聲音播放,提高了用戶體驗(yàn)度。
文檔編號(hào)G06F9/46GK102033775SQ200910235229
公開(kāi)日2011年4月27日 申請(qǐng)日期2009年9月28日 優(yōu)先權(quán)日2009年9月28日
發(fā)明者張弛, 羅應(yīng)文, 遲連濱 申請(qǐng)人:聯(lián)想(北京)有限公司