專利名稱:用于動(dòng)態(tài)背景用戶界面(多個(gè)界面)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
多個(gè)方面涉及用戶界面(user interface),并且一些更具體的方面涉及高級(jí)圖形界面的提供。
背景技術(shù):
圖形用戶界面(GUI)是用戶與電子設(shè)備接口的常見方式,其通常具有計(jì)算能力。一般的GUI包括可用于與用戶交互的資源的圖標(biāo)代表的圖形顯示。這種資源的示例包括代表存儲(chǔ)器中的存儲(chǔ)位置、特定文件、在網(wǎng)絡(luò)中的位置的文件夾圖標(biāo),諸如快捷方式 (shortcut),以及用于應(yīng)用程序的快捷方式。狀態(tài)信息也常常在GUI中提供,諸如位于與當(dāng)前運(yùn)行的程序有關(guān)的任務(wù)欄中的信息,并且具有快速訪問(wèn)菜單。在這種設(shè)備上執(zhí)行的應(yīng)用程序通常在與那些設(shè)備相關(guān)的窗口中執(zhí)行;這些窗口可以最大化和最小化。通常由與在設(shè)備上執(zhí)行的操作系統(tǒng)密切相關(guān)的外殼進(jìn)程(shell process)保存⑶I。⑶I通常采用桌面比擬,使得在⑶I中顯示的每個(gè)圖標(biāo)都與使該圖標(biāo)相對(duì)于其他圖標(biāo)和相對(duì)于GUI的邊界在GUI中進(jìn)行定位的坐標(biāo)相關(guān)。通常為了增強(qiáng)GUI的美學(xué)特性, 可以將壁紙圖像布置在⑶I的背景中,使得⑶I的圖標(biāo)覆蓋在背景上,遮掩背景。背景圖像可以由用戶選擇,并且經(jīng)常存儲(chǔ)在保留的視頻存儲(chǔ)器中,因?yàn)樗拇蟛糠诸l繁被顯示因而確保它被存儲(chǔ)在快速存儲(chǔ)器中是有益的。輸入設(shè)備允許用戶諸如通過(guò)移動(dòng)指點(diǎn)器(pointer)以盤旋在與特定圖標(biāo)相關(guān)的 GUI中的特定位置上而與GUI交互。然后用戶可以采用另一個(gè)動(dòng)作來(lái)指示由該圖標(biāo)代表的資源要被訪問(wèn),這種動(dòng)作可以包括例如雙擊。在本文中提出對(duì)典型的圖形用戶界面的進(jìn)一步的改進(jìn)和增強(qiáng)。
下面的公開參考附圖,其中圖1描繪出顯示與本文描述的元素通信和互操作的框圖;圖2描繪出圖1中描述的元素的子集的布置的另一種設(shè)想。
8
圖3描繪出虛擬設(shè)備驅(qū)動(dòng)器可以實(shí)現(xiàn)由圖1和2中的消息鉤子提供的多方面的功能的框圖;圖4描繪出使用存根DLL(stub DLL)來(lái)實(shí)現(xiàn)由圖1和2中的消息鉤子提供的多方面的功能的框圖;圖5描繪出將部分工作區(qū)分配給一個(gè)或多個(gè)應(yīng)用程序,使得與它們的交互在某些情形下可以實(shí)現(xiàn)激活應(yīng)用程序功能、和這種部分可以被活動(dòng)的(active)應(yīng)用程序窗口和諸如文件夾圖標(biāo)的GUI項(xiàng)擋住的屏幕視圖;圖6描繪出在工作區(qū)中的不同示例點(diǎn)處描繪交互的視圖,對(duì)結(jié)果進(jìn)行描述;圖7描繪出將全部工作區(qū)分配給與應(yīng)用程序相關(guān)的可控區(qū)(actionable area)的示例;圖8-10描繪出例如可以用本文的界面示例實(shí)施的方法的流程圖;圖11-13描繪出依據(jù)這些公開的存儲(chǔ)器分配、進(jìn)程通信(process communication)和實(shí)施方式的其他方面的示例;圖14描繪出一種界面,在該界面中多個(gè)截然不同的透明窗口與工作空間的可區(qū)別的部分共同布置(co-arranged)、以在那些區(qū)域中接收用戶輸入并提供應(yīng)用程序功能或激活;圖15描繪出一種方法,用于維持通過(guò)OS維持的窗口的適當(dāng)?shù)腪順序(ζ ordering),使得圖14的透明窗口保持在適當(dāng)?shù)捻樞?order)中;圖16描繪出一種方法,在該方法中對(duì)顯示桌面事件的響應(yīng)包括更換諸如圖14的那些窗口(以它們的適當(dāng)Z順序),使得它們能夠在它們被分配的位置處持續(xù)接收輸入;圖17描繪出根據(jù)Z順序,在多個(gè)輸入過(guò)程(諸如消息鉤子或者用于處理輸入的窗口過(guò)程)之中通信,和將消息傳遞給適當(dāng)?shù)膽?yīng)用程序接收器(recipient)的流程圖;圖18描繪出例如通過(guò)操作系統(tǒng)維持的桌面顯示;圖19描繪出復(fù)制桌面顯示的元素的顯示,并且還顯示可以檢測(cè)輸入的其他元素;圖20描繪出復(fù)制的桌面顯示與代碼相關(guān),代碼對(duì)輸入進(jìn)行過(guò)濾或者解析從而使明顯指向桌面顯示元素的輸入被傳遞給(例如)OS處理器過(guò)程(OS handler procedure), 而指向其他元素的輸入被指向應(yīng)用程序或者其他消費(fèi)者;圖21和22A-22B描繪出用于示出屏幕調(diào)整大小的多個(gè)方面所顯示的屏幕;圖23描繪出可以接收對(duì)于分配工作區(qū)部分的請(qǐng)求、并且可以包括用于決定哪個(gè)屏幕部分被分配給哪個(gè)應(yīng)用程序的仲裁功能等的API的多個(gè)方面;圖24A和24B描繪出在一些實(shí)施方式中與API相關(guān)的應(yīng)用程序代碼可以怎樣重新部署圖標(biāo)和其他元素的多個(gè)方面;圖25描繪出用于實(shí)施API功能的示例方法;圖沈描繪出一種更新進(jìn)程,用于改變顯示在工作區(qū)中的內(nèi)容,和可以與這種內(nèi)容被顯示之處有關(guān)的分配給應(yīng)用程序的部分;和圖27描繪出可以在實(shí)施本公開的多個(gè)方面中使用的設(shè)備的示例模塊視圖。
發(fā)明內(nèi)容
在一些方面中,代碼被插入到用于設(shè)備的操作系統(tǒng)的程序空間中,在這里被插入的代碼可以在可以通過(guò)操作系統(tǒng)處理諸如鍵擊和鼠標(biāo)事件的用戶界面事件之前監(jiān)視這些用戶界面事件。代碼在本地程序空間中訪問(wèn)用戶界面模型、或者通過(guò)傳輸子系統(tǒng) (messaging subsystem)可訪問(wèn)用戶界面模型。用戶界面模型包括諸如包括移動(dòng)或者單擊的鼠標(biāo)事件可以激活特征或者例程之處的屏幕區(qū)的映射(map)的信息。模型可以模擬諸如鍵擊的其他用戶界面事件具有某含義的情形。通過(guò)咨詢用戶界面模型,被插入的代碼可以確定哪個(gè)用戶界面事件重新導(dǎo)向(redirect)或者繼續(xù)傳遞(pass on)。重新導(dǎo)向的事件被接收它們的應(yīng)用程序使用,并且不引起就象它們否則會(huì)做的那樣的默認(rèn)的操作行為。對(duì)于不匹配用戶界面模型的事件,這些事件可以被傳遞或者允許傳送給操作系統(tǒng)或者在缺乏被插入的代碼的情況下會(huì)接收它們的事件處理器。用戶界面模型可以諸如通過(guò)包含不同的圖畫、圖像或者其他內(nèi)容而對(duì)應(yīng)于與周圍區(qū)域可區(qū)別的壁紙背景圖像的區(qū)域。在一些實(shí)施方式中,被插入的代碼主要在外殼進(jìn)程中操作,外殼進(jìn)程還維持包含諸如用于文件夾的圖標(biāo)的元素的桌面GUI界面,并且還提供對(duì)底層(underlying)操作系統(tǒng)的觀感(look and feel),底層操作系統(tǒng)包括內(nèi)核和文件系統(tǒng)。一些實(shí)施方式可以使用從傳輸子系統(tǒng)接收消息的消息鉤子。其他示例包括可以從其資源截取用戶輸入事件的虛擬設(shè)備驅(qū)動(dòng)器和存根DLL。又一些實(shí)施方式可以使用通過(guò)一個(gè)或多個(gè)應(yīng)用進(jìn)程(application process)維持的一個(gè)透明窗口或者一系列透明窗口,一個(gè)透明窗口或者一系列透明窗口捕捉通常去到桌面外殼窗口的UI事件、并且咨詢應(yīng)用程序來(lái)確定哪個(gè)用戶界面事件起作用(防止默認(rèn)的操作系統(tǒng)行為),和哪個(gè)用戶界面事件在操作系統(tǒng)上傳遞。為了將事件傳遞給操作系統(tǒng),那些 UI事件(諸如鼠標(biāo)事件和鍵擊)可以使用操作系統(tǒng)調(diào)用來(lái)模擬,或者作為系統(tǒng)消息通知到下層桌面外殼窗口。又一些實(shí)施方式可以包括隱藏桌面外殼窗口并且用復(fù)制該桌面的外觀和行為的窗口來(lái)代替它的應(yīng)用程序。同樣,代替窗口(!^placement window)會(huì)包括象這些功能將背景圖像顯示為壁紙,為程序、文件、文件夾和快捷方式、以及操作系統(tǒng)外殼窗口通常會(huì)支持的任何其他項(xiàng)而顯示圖標(biāo)。代替窗口可以支持桌面外殼窗口提供的與被顯示項(xiàng)全部的正常交互(諸如移動(dòng)圖標(biāo),雙擊圖標(biāo)以打開文件或者程序,右擊桌面右鍵菜單等)。代替窗口還可以允許與可控的放在背景上的項(xiàng)(諸如按鈕、圖像、視頻、文本塊等)的交互。用戶界面模型確定哪個(gè)輸入重新導(dǎo)向或者引導(dǎo)給應(yīng)用程序,和哪個(gè)將引起正常的外殼行為(shell behavior)。可以由用戶在它們的選項(xiàng)處隱藏或者暴露這種窗口。
具體實(shí)施例方式在下面的描述中闡明許多具體細(xì)節(jié)以傳達(dá)對(duì)主題內(nèi)容的更透徹的理解。同樣, 提供這些細(xì)節(jié)是為了示例的目的,而非是為了限制。可替代地是,在權(quán)利要求范圍內(nèi)的實(shí)施方式可以不具有多種這些具體細(xì)節(jié)。出于清楚的目的,本領(lǐng)域技術(shù)人員已知的素材 (material)沒(méi)有詳細(xì)描述,以使公開更清楚。通常,術(shù)語(yǔ)“任務(wù)欄”指的是可以用于開始、監(jiān)視和/或切換應(yīng)用程序或者文件系統(tǒng)特征的圖形桌面欄。任務(wù)欄(或者任務(wù)欄中可以包括的組件)的示例包括面板、??繖?(dock)、圖標(biāo)欄、起動(dòng)按鈕、起動(dòng)菜單/按鈕、快速啟動(dòng)欄、系統(tǒng)盤、工具條(deslcband)、布告區(qū)、系統(tǒng)盤、控件欄(widget bar)、小窗口欄(gadget bar)和JAVA小應(yīng)用程序(applet)欄。術(shù)語(yǔ)“工作區(qū)”在本文中一般用來(lái)指GUI的區(qū)域,在該區(qū)域中用戶可以用應(yīng)用程序(包括具有窗口界面的應(yīng)用程序)執(zhí)行工作,以及存儲(chǔ)對(duì)程序、文檔、文件夾和它們的快捷方式的描述。在本文中這種描述一般被稱為“工作區(qū)圖標(biāo)元素”,其示例包括通過(guò)由操作系統(tǒng)產(chǎn)生的GUI產(chǎn)生或維持的元素,諸如圖標(biāo),圖標(biāo)可以代表程序、文檔、文件夾、小窗口 (gadget)、快捷方式、或者控件(widget),或者工具條(deslcband)、公告區(qū)和圖標(biāo)化操作系統(tǒng)功能,諸如垃圾圖標(biāo)(trash icon)、垃圾箱圖標(biāo)、網(wǎng)絡(luò)鄰居圖標(biāo)、瀏覽器圖標(biāo)等。很多現(xiàn)代操作系統(tǒng)和外殼使用桌面隱喻的概念,該概念將屏幕區(qū)劃分成任務(wù)欄和工作區(qū),任務(wù)欄總是被顯示“在頂上”,無(wú)論哪個(gè)應(yīng)用程序窗口是打開的,工作區(qū)被顯示為基本區(qū),應(yīng)用程序窗口、工作區(qū)圖標(biāo)元素被放在基本區(qū)域“之上”。一方面,公開了用于應(yīng)用程序的界面(例如用于用戶、或者用于代理的界面,或者更一般地,用于接收輸入的方式)。界面提供用于從資源獲得輸入給目的地(destination) 的機(jī)制。例如,輸入的資源可以是用戶,而目的地可以是特殊的應(yīng)用程序,或者窗口,或者在設(shè)備(諸如在處理器上執(zhí)行程序的設(shè)備)上執(zhí)行的進(jìn)程。在一些情況下,可以由許多組件形成界面。例如,圖形用戶界面(⑶I)可以包含用于圖形化顯示項(xiàng)(例如窗口、圖標(biāo)、文件夾和其他元素)的顯示,并且給用戶提供用于與GUI交互的機(jī)制,諸如鼠標(biāo)、觸摸屏、手勢(shì)識(shí)另O、鍵盤、控制、按鈕、指點(diǎn)器、鼠標(biāo)、觸覺傳感器、遠(yuǎn)程接口、網(wǎng)絡(luò)適配器、動(dòng)作感知、手勢(shì)感知、觸摸墊等。用戶觀察GUI以獲得關(guān)于設(shè)備的當(dāng)前狀態(tài)的反饋,并且選擇設(shè)備上可用的程序或數(shù)據(jù)元素以激活或與之交互。用于設(shè)備的常見示例界面是在被具有計(jì)算能力的設(shè)備(諸如電視、臺(tái)式計(jì)算機(jī)、 智能電話、膝上型計(jì)算機(jī)、表、導(dǎo)航設(shè)備等)驅(qū)動(dòng)的顯示器上顯示的⑶I界面。在這種設(shè)備具有計(jì)算能力的意義上來(lái)說(shuō),它們可以更一般地指的是計(jì)算機(jī),并且這個(gè)術(shù)語(yǔ)一般用來(lái)指所有這種形式因素和計(jì)算設(shè)備的其他模式,并且是非限制性的。⑶I具有包括壁紙圖像的組件,將該組件維持成來(lái)自用戶的⑶I的“最遠(yuǎn)”可顯示的組件。桌面⑶I的元素通常覆蓋在壁紙圖像上(“靠近”于用戶),使得在桌面⑶I項(xiàng)所位于之處壁紙圖像被遮掩。與活動(dòng)的應(yīng)用程序相關(guān)的窗口離用戶更近,使得⑶I項(xiàng)被窗口遮掩。應(yīng)用程序窗口可以依據(jù)哪個(gè)窗口具有通過(guò)用戶可選擇的輸入焦點(diǎn)(focus)而相互遮掩。操作系統(tǒng)(OS)可以維持桌面上GUI項(xiàng)的詳細(xì)目錄,并且控制哪個(gè)應(yīng)用程序窗口被顯示和具有焦點(diǎn)。一般而言,當(dāng)應(yīng)用程序窗口都不具有焦點(diǎn)時(shí),可以顯示桌面GUI項(xiàng),并且可以在那些項(xiàng)上接收輸入。然而,壁紙圖像通常是靜態(tài)圖像,并被呈現(xiàn)成為用戶提供更佳的審美。從一個(gè)觀點(diǎn)來(lái)看,可以將桌面GUI視為可以具有焦點(diǎn)以接收輸入的應(yīng)用程序。一方面,可以提供應(yīng)用程序功能而無(wú)完全的(full)應(yīng)用程序窗口。在一個(gè)示例中,通過(guò)操縱GUI的壁紙背景部分和確定與那些背景壁紙部分有關(guān)的輸入是否是OS消費(fèi)或者應(yīng)用程序想要的而提供應(yīng)用程序功能。根據(jù)示例性方法,可以在維持本機(jī)(native)操作系統(tǒng)功能的同時(shí)提供應(yīng)用程序功能??梢杂糜诿枋鲞@種應(yīng)用程序功能的一個(gè)術(shù)語(yǔ)是應(yīng)用程序是“具有無(wú)窗口界面(windowless interface)的應(yīng)用程序”。同樣,根據(jù)這些示例,術(shù)語(yǔ) “動(dòng)態(tài)桌面”可以用來(lái)指允許具有無(wú)窗口界面的應(yīng)用程序的桌面或者GUI界面。在示例方法中,用特別構(gòu)造的壁紙代替壁紙,特別構(gòu)造的壁紙將部分壁紙圖像與壁紙圖像的剩余部分進(jìn)行視覺劃界。為了與GUI交互,對(duì)給設(shè)備的輸入進(jìn)行監(jiān)視以確定它們是否與壁紙圖像的被劃界部分(這部分用做無(wú)窗口界面,如下所述)有關(guān)。實(shí)施這個(gè)監(jiān)視以使得與被劃界部分有關(guān)的輸入通過(guò)與壁紙圖像的被劃界部分相關(guān)的應(yīng)用程序進(jìn)行處理,而不是通過(guò)OS進(jìn)行處理,即使被劃界部分可以與壁紙圖像的剩余部分在它怎樣被操作系統(tǒng)存儲(chǔ)和維持的方面在功能上不易區(qū)別的(indistinct)。公開怎樣監(jiān)視和處理這種輸入的不同示例。在一種方法的概述中,將代碼插入到操作系統(tǒng)的程序空間中,在程序空間中代碼可以在諸如鍵擊和鼠標(biāo)事件的用戶界面事件被操作系統(tǒng)處理之前對(duì)它們進(jìn)行監(jiān)視。代碼可以訪問(wèn)用戶界面模型(該模型對(duì)于代碼在其中執(zhí)行的存儲(chǔ)器段可以是內(nèi)部或者外部的), 用戶界面模型確定是否應(yīng)該將給定輸入引導(dǎo)到具有無(wú)窗口界面的應(yīng)用程序或其他地方。代碼可以包括屏幕區(qū)的映射,包括移動(dòng)或單擊在內(nèi)的鼠標(biāo)事件可以在屏幕區(qū)激活特征或例程。模型包括諸如鍵擊的其他用戶界面事件對(duì)于具有無(wú)窗口界面的應(yīng)用程序還可以具有某含義的情形。通過(guò)咨詢用戶界面模型,可以確定哪個(gè)用戶界面事件起作用(防止默認(rèn)的操作系統(tǒng)行為),和哪個(gè)用戶界面事件在操作系統(tǒng)上傳遞。代碼還可以調(diào)用例程來(lái)確定在給定位置處的輸入是否與桌面⑶I元素、或者壁紙圖像的被劃界部分相關(guān)。動(dòng)態(tài)桌面模型是這樣一件事,即,在其中新功能與操作系統(tǒng)的功能交叉 (interleave),使得大多數(shù)本機(jī)操作系統(tǒng)的功能可以被保留,但是應(yīng)用程序提供商可以在屏幕上的確定位置或者在確定情形下改變或者撤消(override)該行為。例如,輸入設(shè)備可以用于引導(dǎo)指針在與代碼段相關(guān)的屏幕區(qū)域上堅(jiān)持或單擊,可以對(duì)代碼段進(jìn)行解釋以激活相應(yīng)于該代碼段的應(yīng)用程序驅(qū)動(dòng)的菜單,在這種情況下不會(huì)將事件傳遞給操作系統(tǒng)204,以防止它在同一處還顯示默認(rèn)菜單或者情境菜單。然而,如果用戶使用輸入設(shè)備104單擊由操作系統(tǒng)放置的桌面圖標(biāo)310或312,則代碼202將消息傳遞給操作系統(tǒng)204以允許默認(rèn)行為發(fā)生。在特殊示例中,可以將用于監(jiān)視這種輸入的代碼提供成外殼擴(kuò)展,并且代碼可以與作為在應(yīng)用程序?qū)又械某R?guī)應(yīng)用程序運(yùn)行的應(yīng)用程序通信??紤]下面的公開,進(jìn)一步的細(xì)節(jié)將變得更清楚。圖1描繪出其中具有輸入設(shè)備(多個(gè)輸入設(shè)備)25(例如鼠標(biāo))的示例系統(tǒng)的圖。 將設(shè)備驅(qū)動(dòng)器21描繪成由操作系統(tǒng)20來(lái)執(zhí)行。設(shè)備驅(qū)動(dòng)器21從輸入設(shè)備(多個(gè)輸入設(shè)備)25接收相對(duì)粗糙的、未經(jīng)處理的輸入并且產(chǎn)生輸出,該輸出可以通過(guò)與操作系統(tǒng)相關(guān)的傳輸系統(tǒng)、或者將輸入提供給適當(dāng)?shù)哪康牡鼗蚨鄠€(gè)目的地的傳輸API進(jìn)行處理。例如,傳輸子系統(tǒng)可以利用由操作系統(tǒng)20確定的輸入(諸如鼠標(biāo)單擊,或者鍵盤輸入)來(lái)傳輸具有焦點(diǎn)的應(yīng)用程序以與該窗口有關(guān)。在圖1中,外殼進(jìn)程5維持具有⑶I項(xiàng)的桌面⑶I 34(在后續(xù)附圖中描繪出)??梢詫⑼鈿みM(jìn)程5視為操作系統(tǒng)20的一部分,但是出于清晰的目的將它單獨(dú)描繪出。將消息鉤子8顯示為接收輸入(例如,具有用于所使用的特殊OS的適當(dāng)格式的、來(lái)自操作系統(tǒng) 20的消息,該消息代表設(shè)備驅(qū)動(dòng)器21的輸出)。消息鉤子具有與應(yīng)用程序11的傳輸信道 (messaging channel) 14(或者更一般地,與應(yīng)用程序11通信的方式)。同樣,應(yīng)用程序11 可以產(chǎn)生由消息鉤子8接收的消息(例如響應(yīng)12)。消息鉤子8還可以產(chǎn)生通過(guò)消息鉤子 7接收的消息,消息鉤子7進(jìn)而可以與應(yīng)用程序10通信,并且同樣地,消息鉤子6可以接收來(lái)自消息鉤子7的輸出,并且與應(yīng)用程序9通信。虛線描繪消息鉤子6和7及它們相應(yīng)的應(yīng)
12用程序9和10是可選的,但是被描繪成顯示可以提供許多這種鉤子和應(yīng)用程序??梢詫⑦@種消息鉤子實(shí)施成外殼擴(kuò)展,諸如對(duì)Microsoft Windows Shell、和/或Component Object Model (“COM”)對(duì)象(擴(kuò)展默認(rèn)外殼)的擴(kuò)展。例如,Windows API調(diào)用ktWindowsHookEx可以用于在使用Microsoft Windows的實(shí)施方式中設(shè)置消息鉤子。ktWindowsHooEx接收不同類型的消息鉤子類型,并且一些感興趣的示例鉤子類型包括WH_KETO0ARD和WH_M0USE, 當(dāng)鍵盤和鼠標(biāo)事件分別被處理時(shí)對(duì)它們進(jìn)行調(diào)用。代碼實(shí)施的消息鉤子可以存儲(chǔ)在動(dòng)態(tài)鏈接庫(kù)(DLL)中。Microsoft Windows中的消息鉤子在鏈接列表中被鏈接,通過(guò)在圖1和2中顯示的消息鉤子的鏈接來(lái)代表鏈接列表。每個(gè)消息鉤子7-9都具有到其各自的應(yīng)用程序的松耦合(loosely coupled)(動(dòng)態(tài))連接,以提供與可以影響OS 20的應(yīng)用程序中的錯(cuò)誤的隔離。例如,如果應(yīng)用程序終止而不關(guān)閉它的消息鉤子,則它的消息鉤子可以超時(shí)設(shè)定(timeout),如果它未接收到對(duì)發(fā)送給其應(yīng)用程序的消息的響應(yīng),并且接著通過(guò)傳遞所有輸入事件、而非給其應(yīng)用程序過(guò)濾掉一些事件,必須將它自身看待成透明的。如果應(yīng)用程序稍后重新啟動(dòng),則其消息鉤子可以自動(dòng)重新獲得與它的連接,并將再次正常地傳遞用戶輸入事件。這個(gè)方法允許在大多數(shù)情況下應(yīng)用程序關(guān)閉、更新或者甚至崩潰(crash),而不影響外殼或者OS 20。消息鉤子可以與單獨(dú)的進(jìn)程通信,單獨(dú)的進(jìn)程維持由消息鉤子使用的用戶界面模型以通過(guò)在操作系統(tǒng)中定義的標(biāo)準(zhǔn)進(jìn)程間通信來(lái)過(guò)濾輸入。進(jìn)程間通信模式的示例包括共享存儲(chǔ)器區(qū)域、套接字、管道、郵槽、文件映射、數(shù)據(jù)拷貝和組件對(duì)象模型(COM)。維持這種(通過(guò)消息鉤子訪問(wèn)的)用戶界面模型的進(jìn)程可以在OS 20中的應(yīng)用程序級(jí)運(yùn)行,并且一般不需要內(nèi)核特權(quán)(kernel privilege)。輸出⑶I ;34以便通過(guò)圖形處理器33顯示在顯示器35上。API調(diào)用可以通過(guò)操作系統(tǒng)20提供以訪問(wèn)圖形處理器33。描繪出視頻存儲(chǔ)器30,視頻存儲(chǔ)器30為圖形處理器 33存儲(chǔ)數(shù)據(jù)。視頻存儲(chǔ)器30被描繪為具有用于壁紙圖像31 (壁紙31)的保留位置。壁紙 31可以存儲(chǔ)在這種視頻存儲(chǔ)器中以提高性能,因?yàn)槠鋬?nèi)容比其他內(nèi)容可能更加頻繁地被需要。從用戶級(jí)的觀點(diǎn)來(lái)看,用于存儲(chǔ)壁紙31的空間已經(jīng)被消耗,并因此改變壁紙31—般不消耗尚未被占據(jù)的進(jìn)一步的系統(tǒng)資源。同樣,通過(guò)在壁紙上繪畫,為壁紙31保留的視頻存儲(chǔ)器可以被有效使用,并且如果應(yīng)用程序177是打開、關(guān)閉或者崩潰的,則顯示的壁紙31在存儲(chǔ)器中被保持為靜態(tài)的。圖2描繪出外殼進(jìn)程號(hào)5包含消息鉤子6-8,正如關(guān)于圖1解釋的那樣,外殼進(jìn)程 5維持⑶I 34。在一些操作系統(tǒng)中,消息鉤子6-8的存在暗示在相應(yīng)于目前正在運(yùn)行的應(yīng)用程序或者駐留在系統(tǒng)上的存儲(chǔ)器的進(jìn)程中的消息鉤子的存在。圖2描繪出具有消息鉤子 41-43的這種情形。如圖所示,消息鉤子43與外殼進(jìn)程5中的消息鉤子8相對(duì)應(yīng)。因此,當(dāng)應(yīng)用進(jìn)程40具有焦點(diǎn)(它從一個(gè)或多個(gè)用戶輸入設(shè)備接收輸入)時(shí),消息鉤子43首先接收指示這種輸入的消息。例如,消息可以含有鼠標(biāo)位置信息、鍵盤入口(entry)信息、鼠標(biāo)單擊、或者通過(guò)其他可用的用戶界面產(chǎn)生的其他信息。正如下面將進(jìn)一步詳細(xì)解釋的那樣, 消息鉤子43含有模型來(lái)確定在接收的消息中描述的任何輸入是否將感興趣的任何相應(yīng)輸入映射到它的應(yīng)用程序。如果消息將感興趣的輸入描述給它的應(yīng)用程序,則消息鉤子43將傳輸它的相應(yīng)的應(yīng)用程序(象圖1中那樣),并且如果給定輸入不映射到在消息鉤子43的模型中的一個(gè)輸入,則消息鉤子43將使消息在要通過(guò)消息鉤子42接收的消息鏈上向上傳送(travel up),消息鉤子42進(jìn)而重復(fù)關(guān)于消息鉤子43描述的進(jìn)程。更具體地是,諸如Microsoft Windows的一些操作系統(tǒng)提供全局鉤子(glottal hook)的實(shí)施方式,全局鉤子通過(guò)其本身性質(zhì)(very nature)被例示或者插入到任何運(yùn)行的進(jìn)程的代碼段中,任何運(yùn)行的進(jìn)程包括外殼進(jìn)程5和應(yīng)用進(jìn)程40的所描繪的進(jìn)程。因此, 圖2描繪在Microsoft Windows環(huán)境中與所公開的多個(gè)方面的實(shí)施方式有關(guān)的情形。然而, 所公開的多個(gè)方面決不被限制成在Microsoft Windows環(huán)境中使用,并且下面描述的圖3 和4公開其他示例,這些示例可以既在Microsoft Windows環(huán)境中又在其他操作系統(tǒng)環(huán)境中使用。圖3描繪出輸入設(shè)備25可以產(chǎn)生通過(guò)虛擬設(shè)備驅(qū)動(dòng)器51接收的輸入。虛擬設(shè)備驅(qū)動(dòng)器51從輸入設(shè)備25截取消息,通常由輸入設(shè)備25的賣方提供的這些消息要通過(guò)其正常的設(shè)備驅(qū)動(dòng)器21接收。虛擬設(shè)備驅(qū)動(dòng)器51訪問(wèn)輸入模型,輸入模型用于確定來(lái)自輸入設(shè)備25的給定輸入是否是應(yīng)用程序11感興趣的。例如,虛擬設(shè)備驅(qū)動(dòng)器51可以維持或訪問(wèn)GUI 34中的工作空間的被劃界的子部分的模型。當(dāng)諸如鼠標(biāo)單擊的輸入在那些被劃界區(qū)的任何一個(gè)中被接收到時(shí),虛擬設(shè)備驅(qū)動(dòng)器51可以確定這個(gè)鼠標(biāo)單擊與應(yīng)用程序11有關(guān)并且可以將來(lái)自設(shè)備驅(qū)動(dòng)器21的鼠標(biāo)單擊轉(zhuǎn)移(divert)成被應(yīng)用程序11接收。然而, 如果由設(shè)備驅(qū)動(dòng)器51維持的輸入模型發(fā)現(xiàn)從輸入設(shè)備25發(fā)送給它的給定輸入與應(yīng)用程序 11無(wú)關(guān),則虛擬設(shè)備驅(qū)動(dòng)器51將使輸入被設(shè)備驅(qū)動(dòng)器21接收,就象虛擬設(shè)備驅(qū)動(dòng)器51不存在一樣。設(shè)備驅(qū)動(dòng)器21可以使描述輸入事件的消息保持有效,或者將消息提供給用于事件處理子系統(tǒng)50。通過(guò)與圖1和2中描繪的方法相對(duì)照,虛擬設(shè)備驅(qū)動(dòng)器51維持輸入模型,輸入模型在更低級(jí)別上將輸入事件映射到應(yīng)用程序,尤其是消息鉤子6-8和41-43。每個(gè)通常都在應(yīng)用程序空間中執(zhí)行,而虛擬設(shè)備驅(qū)動(dòng)器51可以在內(nèi)核空間內(nèi)或者在另一個(gè)受保護(hù)的存儲(chǔ)器位置內(nèi)執(zhí)行。為了這個(gè)描述,還可以將虛擬設(shè)備驅(qū)動(dòng)器51視為將代碼插入到應(yīng)用程序空間中,使得該代碼截取輸入并且對(duì)某些輸入進(jìn)行過(guò)濾或者使其重新導(dǎo)向,這些輸入被已經(jīng)注冊(cè)以接收這種輸入的一個(gè)或多個(gè)應(yīng)用程序接收。圖4描繪出代碼插入以實(shí)現(xiàn)這個(gè)基本的方法和目的的另一個(gè)示例。在這里,輸入設(shè)備25通過(guò)任意數(shù)量的潛在中間步驟將輸入事件傳送給存根DLL 55。存根DLL 55維持或者訪問(wèn)輸入模型,正如關(guān)于圖1、2和3描述的那樣。存根DLL 55使用該輸入模型來(lái)確定是否允許將給定輸入傳送給DLL 56,DLL 56進(jìn)而可以再次通過(guò)一個(gè)或多個(gè)中間通信步驟將該輸入事件提供給消息事件處理子系統(tǒng)50,或者使該輸入事件被傳送給應(yīng)用程序11。下面關(guān)于圖5、6和7提供關(guān)于上面的描述和附圖所參考的關(guān)于輸入模型的更多細(xì)節(jié)?,F(xiàn)在轉(zhuǎn)到圖5,圖5描繪出適于實(shí)施所公開的多個(gè)方面的⑶I 34的示例。將⑶I 34的可顯示部分標(biāo)記為105,而工作區(qū)101占據(jù)了該空間的一個(gè)子集,包括任務(wù)欄。壁紙107 — 般被顯示在工作區(qū)101之后。通過(guò)諸如圖1的操作系統(tǒng)20的操作系統(tǒng)維持圖5中描繪的一些元素。例如,圖標(biāo)102、文件夾圖標(biāo)103、104和114、指點(diǎn)器125、應(yīng)用程序窗口 116和 117。還描繪出工作區(qū)101的許多被定義或者劃界的部分。正如上面介紹和下面進(jìn)一步詳細(xì)解釋的那樣,這些部分可以是用于一個(gè)或多個(gè)應(yīng)用程序的輸入模型的一部分或者被分配給用于一個(gè)或多個(gè)應(yīng)用程序的輸入模型,它們被一個(gè)或多個(gè)消息鉤子、虛擬設(shè)備驅(qū)動(dòng)器、存根DLL或者本文描述的另一種方法監(jiān)視。第一被劃界區(qū)域120用虛線顯示,而視覺上可區(qū)分的元素122被描繪為處在區(qū)域120內(nèi)。正如圖1中介紹的那樣,元素122可以是例如在工作區(qū)101中顯示的壁紙的一部分。元素122可以是一個(gè)圖片或者多個(gè)圖片,并且區(qū)域120 被定義成包含或者限定那些圖片或者多個(gè)圖片。圖5進(jìn)一步描繪出該文件夾圖標(biāo)114可以遮掩元素122,例如,如果元素122是在工作區(qū)101上的壁紙中含有的圖片,則被操作系統(tǒng)或者外殼進(jìn)程維持的文件夾圖標(biāo)114會(huì)顯示在該圖片上,使得該圖片的一部分可以被遮掩。 同樣,應(yīng)用程序窗口 117可以遮掩一些子部分123。還描繪出子部分124。通常,可以預(yù)見到子部分120、123和IM將通過(guò)工作區(qū)101上提供的視覺上可區(qū)分的特性、并且在壁紙31 上的具體示例中進(jìn)行識(shí)別或者另外劃界。例如,截然不同的圖形或者圖片可以位于子部分 122、123和IM的每個(gè)之中。下面提供與這些公開的意義或者適用性有關(guān)的進(jìn)一步的細(xì)節(jié)。轉(zhuǎn)到圖6,圖6描述與本文描繪的工作區(qū)101和元素有關(guān)的輸入事件的示例的進(jìn)一步的細(xì)節(jié)。類似于圖5,圖6描繪出由諸如文件夾圖標(biāo)103的GUI維持的圖標(biāo),由諸如子部分123、1沈和127的一個(gè)或多個(gè)應(yīng)用程序定義的工作區(qū)的子部分,和諸如應(yīng)用程序窗口 117 的應(yīng)用程序窗口。作為第一示例,將文件夾圖標(biāo)103顯示為具有與其相關(guān)的輸入事件130。 可以確定輸入事件130與文件夾圖標(biāo)103相關(guān),因?yàn)樗诠ぷ鲄^(qū)101內(nèi)布置文件夾圖標(biāo)103 的位置處被接收到。正如下面將要解釋的那樣,象文件夾圖標(biāo)103這樣的⑶I元素的位置可以通過(guò)外殼進(jìn)程維持,諸如外殼進(jìn)程和在圖1和2中描繪的5個(gè)。將輸入事件133描繪成在不存在⑶I的元素的工作區(qū)101、應(yīng)用程序窗口 117、或者是子部分123、1沈和127的任何一個(gè)的位置處被接收到。因此,當(dāng)輸入事件133被引導(dǎo)到僅被壁紙圖像的靜態(tài)部分占據(jù)的一部分工作區(qū)101時(shí),輸入事件133會(huì)被外殼進(jìn)程5接收到。通過(guò)對(duì)照,輸入事件131在子部分126內(nèi)的位置處被接收到,進(jìn)一步的輸入131不在任何應(yīng)用程序窗口內(nèi)的位置處或者GUI的任何圖標(biāo)被維持之處。因此,確定輸入131與子部分1 相關(guān),并且子部分1 進(jìn)而與應(yīng)用程序相關(guān)。由于該相關(guān)輸入事件131被重新導(dǎo)向或者傳輸給該應(yīng)用程序,因此未被外殼進(jìn)程5接收到,正如正常的桌面GUI界面的典型情況那樣。在進(jìn)一步的示例中,將輸入事件132描繪為位于子部分127和子部分127的重疊區(qū)中。在這種境況下,可以強(qiáng)制遵從子部分127和1 之間的優(yōu)先級(jí)(order of precedence)。 在本文中公開產(chǎn)生這種優(yōu)先級(jí)的多種示例機(jī)制。子部分123和應(yīng)用程序窗口 117部分重疊。 因?yàn)檩斎胧录?34位于應(yīng)用程序窗口 117的邊界內(nèi),所以與應(yīng)用程序窗口 117相關(guān)的進(jìn)程將接收該輸入事件,即使輸入事件134的位置也在子部分123內(nèi)??梢酝ㄟ^(guò)在當(dāng)前具有焦點(diǎn)的應(yīng)用程序內(nèi)執(zhí)行的消息鉤子產(chǎn)生這些結(jié)果。例如,當(dāng)其他應(yīng)用程序沒(méi)有焦點(diǎn)時(shí),在缺乏應(yīng)用程序窗口的情況下外殼進(jìn)程5具有焦點(diǎn)并且顯示全部的工作區(qū)101。在外殼進(jìn)程5中執(zhí)行的消息鉤子會(huì)接收輸入事件并且可以詢問(wèn)通過(guò)外殼進(jìn)程5維持的列表進(jìn)程以確定圖標(biāo)在工作區(qū)101中的位置,并且可以詢問(wèn)維持與一個(gè)或多個(gè)應(yīng)用程序相關(guān)的工作區(qū)101的子部分的定義的另一個(gè)進(jìn)程。將這些位置上的輸入與輸入事件的位置進(jìn)行對(duì)比,消息鉤子可以確定輸入事件是否在GUI的任何實(shí)際項(xiàng)之外,但是在與應(yīng)用程序相關(guān)的子部分之內(nèi)。圖7描繪出進(jìn)一步的示例,在該示例中全部工作區(qū)145都被與應(yīng)用程序相關(guān)的子部分144占據(jù),使得不另外處于被應(yīng)用程序窗口或者被GUI的圖標(biāo)占據(jù)的位置處的任何輸入事件都改為與應(yīng)用程序相關(guān)。在這個(gè)情況下,輸入事件130會(huì)被外殼進(jìn)程5接收,因?yàn)樗幵诒晃募A圖標(biāo)103占據(jù)的位置處。圖8描繪出可以通過(guò)消息鉤子或者通過(guò)在系統(tǒng)中執(zhí)行的代碼執(zhí)行的示例方法,以
15便確定是否考慮通過(guò)工作區(qū)的子部分、而非通過(guò)外殼進(jìn)程或者通過(guò)焦點(diǎn)中的應(yīng)用程序接收輸入??梢越邮?20 與活動(dòng)的應(yīng)用程序窗口不相關(guān)的輸入事件??梢宰龀鲫P(guān)于該輸入事件是否與顯示的子部分有關(guān)的確定003),該顯示的子部分主要與應(yīng)用程序相關(guān)。在這里, 主要相關(guān)地指出這里沒(méi)有應(yīng)該獲得接收該輸入的優(yōu)先權(quán)的諸如GUI圖標(biāo)的GUI元素。此夕卜,這個(gè)確定還暗示發(fā)現(xiàn)輸入事件與GUI中的位置有關(guān),該位置已經(jīng)與應(yīng)用程序相關(guān),正如由圖5、6和7中的子部分120、123和124描繪出的那樣。如果這個(gè)條件為真,則將輸入事件引導(dǎo)(204)到與和輸入事件的位置相關(guān)的顯示部分相關(guān)的應(yīng)用程序。然而,如果條件不為真,則提供輸入事件以便處理成正常的桌面GUI 事件,這可以包括輸入將傳遞輸入事件,從而該事件可以激活被圖標(biāo)代表的資源,諸如通過(guò)右擊打開文件夾或者載入應(yīng)用程序或者與可用的情境菜單簡(jiǎn)單地交互。因此,圖8描繪出操作系統(tǒng)的傳輸子系統(tǒng)確定哪個(gè)應(yīng)用進(jìn)程將為輸入事件接收給定消息的情形?;谀膫€(gè)應(yīng)用程序窗口是活動(dòng)的(具有焦點(diǎn)),并且只要輸入事件與未被由外殼進(jìn)程維持的GUI元素占據(jù)的顯示部分有關(guān),與那部分顯示相關(guān)的應(yīng)用程序會(huì)通過(guò)消息重新導(dǎo)向技術(shù)潛在地接收該輸入事件。圖8被組織成公開在一些情況下,通過(guò)OS 20處理活動(dòng)的應(yīng)用程序窗口是否位于提供輸入事件之處的問(wèn)題,從而使通過(guò)消息鉤子提供的代碼操作成基于對(duì)GUI的元素的位置與GUI的工作區(qū)的預(yù)定義的子部分進(jìn)行比較,在外殼進(jìn)程內(nèi)使消息重新導(dǎo)向,其中OS 20維持哪個(gè)窗口具有焦點(diǎn)以接收輸入的狀態(tài)。圖9描繪出根據(jù)這些方面的方法。在圖9中,該方法與基于圖8中描繪的方法已經(jīng)確定可以重新導(dǎo)向到應(yīng)用程序的輸入事件有關(guān)。尤其是,通過(guò)應(yīng)用程序接收輸入事件的確定(210)造成該輸入事件被傳輸給與應(yīng)用程序相關(guān)的進(jìn)程012)。此后,執(zhí)行確定(203)的消息鉤子或者其他代碼會(huì)等待來(lái)自該進(jìn)程的響應(yīng)016)。如果接收到響應(yīng),則將輸入事件分配給該應(yīng)用進(jìn)程014)。然而,如果在需要的時(shí)間限制內(nèi)沒(méi)接收到響應(yīng),則執(zhí)行確定O03) 的代碼改為允許輸入事件根據(jù)正常的傳輸鏈進(jìn)行傳送(218)。例如,在圖1的系統(tǒng)中可以將輸入事件傳送給外殼進(jìn)程5。可以通過(guò)產(chǎn)生消息或者通過(guò)允許通過(guò)執(zhí)行確定O03)的進(jìn)程接收的消息在預(yù)定義的消息鏈中繼續(xù)傳送來(lái)實(shí)現(xiàn)傳送(218)。圖10描繪出可以通過(guò)耦合到顯示器的設(shè)備維持或者提供的許多GUI的示例方法。 可以提供許多⑶I用于顯示。如果與顯示器上的位置有關(guān)的輸入事件被接收到227,則輸入事件的位置被訪問(wèn)0四)。從主要⑶I項(xiàng)位置信息035)的資源訪問(wèn)用于主要⑶I的圖標(biāo)的位置信息031)。做出關(guān)于輸入事件的位置是否與主要GUI的任何項(xiàng)有關(guān)的確定033)。 如果是,則輸入事件被引導(dǎo)到與主要GUI相關(guān)的進(jìn)程037)。該進(jìn)程可以激活應(yīng)用程序或者采取正如由輸入模型規(guī)定的一些其他動(dòng)作。然而,如果輸入事件的位置與主要⑶I項(xiàng)無(wú)關(guān), 則訪問(wèn)用于其他GUI的邊界區(qū)域的定義信息039)。如果輸入事件的位置與僅用于一個(gè)其他的GUI的區(qū)域有關(guān),則將輸入事件引導(dǎo)到與該GUI相關(guān)的進(jìn)程043)。如果輸入事件的位置與多于一個(gè)區(qū)域有關(guān)045),則描述GUI的優(yōu)先級(jí)的信息被訪問(wèn)(M7)并且將輸入事件引導(dǎo)到具有與輸入事件的位置有關(guān)的多個(gè)GUI的最高優(yōu)先級(jí)的GUI (M9)。然而,如果確定 (241)和( 兩者都是否,則輸入事件與任何GUI無(wú)關(guān)并且作為默認(rèn),可以將輸入事件發(fā)送給用于主要⑶I的進(jìn)程037)。在具體示例中,可以通過(guò)OS外殼(例如外殼5)維持主要 ⑶I,而其他⑶I可以與不同的應(yīng)用程序相關(guān)。圖11描繪出在本文公開的系統(tǒng)實(shí)施方面中對(duì)存儲(chǔ)器空間的示例分配。HW界面組件326與傳輸組件3M接口以轉(zhuǎn)送接收的輸入事件消息。依據(jù)⑶I中的焦點(diǎn),可以將給定輸入事件消息發(fā)送給用于外殼進(jìn)程304的本地范圍(local scope),用于第二⑶I進(jìn)程312 的本地范圍,或者用于應(yīng)用程序318的本地范圍。用于外殼進(jìn)程304的本地范圍包括可以與用于外殼306的代碼通信的消息鉤子308。外殼代碼306還與主要⑶I 310的映射通信。 尤其是,外殼代碼306可以在移動(dòng)、刪除或者添加圖標(biāo)或者其他GUI元素時(shí)維持映射。同樣, 消息鉤子308可以詢問(wèn)主要GUI 310的映射,因?yàn)橄^子308在用于外殼進(jìn)程的本地范圍304中執(zhí)行。在本文公開的多個(gè)方面的一個(gè)使用中,鏈接到消息鉤子的應(yīng)用程序可以用許多圖像來(lái)更新壁紙背景,便于被用戶觀看。例如,圖像可以是用戶感興趣的圖像,諸如從事件獲得的圖片選擇出的抽象拼貼畫,或者人、活動(dòng)或者用戶相關(guān)的興趣的一組視覺標(biāo)簽。用戶可以在顯示這種圖片或者其他圖標(biāo)的區(qū)域內(nèi)盤旋或者雙擊。消息鉤子可以通過(guò)使用它的用戶輸入模型和桌面GUI的被顯示元素的可用的映射來(lái)檢測(cè)這種事件。消息鉤子可以為被檢測(cè)的輸入事件將消息發(fā)送給應(yīng)用程序,這可以通過(guò)打開全部應(yīng)用程序窗口來(lái)響應(yīng),用戶可以在窗口中與其他內(nèi)容進(jìn)一步交互。在一些實(shí)施方式中,可以通過(guò)用戶安裝應(yīng)用程序,并且在應(yīng)用程序運(yùn)行時(shí),應(yīng)用程序執(zhí)行示例輸入事件過(guò)濾和本文描述的其他動(dòng)作。應(yīng)用程序可以分布在有形的媒體上,或者被下載,文件共享等。消息鉤子308還可以經(jīng)由傳輸316與用于和應(yīng)用程序相關(guān)的⑶I的部分工作區(qū)的映射314通信,諸如關(guān)于圖5、6和7描繪和描述的那些子部分。例如,映射314可以含有工作區(qū)的矩形子部分的角坐標(biāo)??梢愿鶕?jù)允許編程式確定給定位置是否處在或不處在子部分內(nèi)的任何技術(shù)來(lái)定義更復(fù)雜的子部分形狀。正如關(guān)于圖8、9和10中描繪的方法所描述的那樣,在確定是否要利用第二 GUI進(jìn)程從外殼代碼306將給定輸入事件重新導(dǎo)向到用于應(yīng)用程序的事件處理器的過(guò)程中,可以通過(guò)消息鉤子308參考映射310和映射314的每個(gè)。同樣,如果應(yīng)用程序318具有焦點(diǎn),則具有輸入事件的消息將被消息鉤子322首先接收到,消息鉤子322可以是消息鉤子308的另一個(gè)示例。然而在這里,因?yàn)橄^子322 在進(jìn)程而非外殼進(jìn)程中執(zhí)行,所以輸入事件將不主要與具有第二 GUI進(jìn)程的應(yīng)用程序相關(guān)是毫無(wú)疑問(wèn)的。同樣,消息鉤子322通常不會(huì)使它接收的消息重新導(dǎo)向,而是改為那些消息會(huì)被傳送給應(yīng)用程序代碼320。因此將消息鉤子322主要描繪成用于顯示可以通過(guò)操作系統(tǒng)或者其他引導(dǎo)代碼將消息鉤子載入到用于應(yīng)用程序的存儲(chǔ)器段中,即使消息鉤子功能對(duì)于它接收的輸入事件將是透明的。圖12描繪出消息鉤子可以怎樣訪問(wèn)用于與應(yīng)用程序相關(guān)的工作區(qū)的區(qū)域的映射、以及用于主要GUI的元素的映射。在描繪的示例中,消息鉤子308不與單獨(dú)的存儲(chǔ)器段通信以獲得關(guān)于與應(yīng)用程序相關(guān)的工作區(qū)的區(qū)域的信息,而是改為將映射314存儲(chǔ)在用于外殼進(jìn)程自身的本地存儲(chǔ)器范圍內(nèi)。更具體地是,圖12描繪出消息鉤子308可以與可以包括輸入事件處理器的外殼代碼306、以及含有定義與一個(gè)或多個(gè)應(yīng)用程序相關(guān)的工作區(qū)的區(qū)域(考慮圖5、6和7中描繪的示例工作區(qū)子部分)的信息的映射314進(jìn)行通信。外殼代碼306還訪問(wèn)和維持主要⑶I元素310的映射。消息鉤子308可以訪問(wèn)外殼代碼306中的功能以獲得用于主要GUI元素的位置的定義信息。同樣,圖12描繪出消息鉤子可以改為本地維持映射,而非傳輸?shù)奖镜卮鎯?chǔ)器。這種實(shí)施方式會(huì)使存儲(chǔ)器鉤子308和映射314的存儲(chǔ)器占用比僅用于存儲(chǔ)器鉤子308的存儲(chǔ)器占用更大。然而,這個(gè)是可接受的一種可選實(shí)施方式,并且不提供略微更高的程度,尤其在映射314中含有的信息并不過(guò)分大之處,例如如果工作區(qū)的區(qū)域是規(guī)則的,則可以用相對(duì)小量的數(shù)據(jù)來(lái)定義它們。圖13描繪出從消息子系統(tǒng)3 接收⑶I事件的進(jìn)一步的示例實(shí)施方式。通常,窗口過(guò)程318會(huì)接收這種UI事件;然而,該窗口過(guò)程可以被子類化(subclass)以產(chǎn)生子類化的窗口過(guò)程324,窗口過(guò)程3M可以與用于與一個(gè)或多個(gè)應(yīng)用程序相關(guān)的工作區(qū)的區(qū)域的映射3 接口。該子類化的窗口過(guò)程3M還可以與外殼代碼306通信以傳遞輸入,該輸入會(huì)被發(fā)現(xiàn)與和通過(guò)映射3 定義的那些應(yīng)用程序相關(guān)的工作區(qū)的區(qū)域不相關(guān)。正如圖12 中那樣,外殼代碼306可以維持和訪問(wèn)主要⑶I元素的映射310,并且根據(jù)過(guò)程將這種信息提供給子類化的窗口過(guò)程324。上面的公開和附圖提供用于提供活動(dòng)的壁紙界面的多個(gè)示例,在壁紙界面中可以定義區(qū)域并且使其與各個(gè)輸入模型相關(guān)??梢杂成淠切﹨^(qū)域,并且可以存儲(chǔ)這種映射信息便于被消息鉤子或者插入到當(dāng)前具有焦點(diǎn)以接收輸入的進(jìn)程的其他代碼訪問(wèn)。還可以將映射數(shù)據(jù)自身載入到這種進(jìn)程中或者可以維持在單獨(dú)的進(jìn)程中并且在需要時(shí)通過(guò)消息鉤子詢問(wèn)。當(dāng)維持壁紙和主要GUI界面的外殼進(jìn)程具有焦點(diǎn)時(shí),消息鉤子在用于該外殼的存儲(chǔ)器段中執(zhí)行并且可以訪問(wèn)用于通過(guò)外殼定位的GUI元素的位置信息。還描述了可選的實(shí)施方式可以提供存根DLL或者虛擬設(shè)備驅(qū)動(dòng)器而非消息鉤子實(shí)施方式,或者除了消息鉤子實(shí)施方式之外還可以提供存根DLL或者虛擬設(shè)備驅(qū)動(dòng)器,可選的實(shí)施方式用做主要示例。此夕卜,可以提供可擴(kuò)展數(shù)量的GUI和在它們之中強(qiáng)制遵從的優(yōu)先級(jí),正如關(guān)于圖10解釋的那樣。示例因此進(jìn)一步(far)具有公共屬性,即,通過(guò)插入到操作系統(tǒng)或者應(yīng)用程序空間中的代碼過(guò)濾輸入事件或者使其重新導(dǎo)向,該代碼可以在這種輸入事件通過(guò)應(yīng)用程序或者通過(guò)操作系統(tǒng)自身維持的責(zé)任而起作用之前,截取這種輸入事件??梢詫?shí)施又一些示例, 這些示例不依賴于虛擬設(shè)備驅(qū)動(dòng)器過(guò)濾存根DLL或者消息鉤子。這些實(shí)施方式的一些示例描述如下。圖14描繪出具有壁紙178的工作區(qū)101,幾個(gè)可區(qū)分的區(qū)域177、176和175位于壁紙178上。例如人像是可以位于壁紙178的這些區(qū)中的圖片。通過(guò)一個(gè)應(yīng)用程序或者多個(gè)應(yīng)用程序產(chǎn)生的預(yù)計(jì)透明的窗口位于這些區(qū)域的每個(gè)之上。尤其是,透明窗口 120位于區(qū)域176之上,窗口 123位于區(qū)域175之上,而窗口 IM位于區(qū)域177之上。因?yàn)閰^(qū)域175、 176和177在背景壁紙中被定義,所以它們可以被應(yīng)用程序窗口 117遮掩。通過(guò)與之前的示例相對(duì)照,透明窗口 120、123和IM與應(yīng)用程序窗口 117是相當(dāng)?shù)幕蛘呖苫Q的(S卩,通過(guò) OS例示全部的窗口,而非通過(guò)檢測(cè)輸入事件的本地屬性進(jìn)行管理的“虛擬”窗口 );差別在于它們是透明的而非具有與應(yīng)用程序窗口相關(guān)的典型元素,諸如用于最大化和最小化滾動(dòng)條等的不透明的背景按鈕。操作系統(tǒng)為包括窗口 117和透明窗口 120、123和124在內(nèi)的所有活動(dòng)的窗口維持Z順序(Z order)。通過(guò)確保透明窗口具有相對(duì)直接高于(above)背景壁紙并且低于 (underneath)所有其他應(yīng)用程序窗口的Z順序,可以獲得上述示例的類似效果。例如,只要用于窗口 117的Z順序在窗口 123 “之前”,則將通過(guò)窗口 117而非窗口 123察覺到在那些窗口重疊的位置處接收的輸入事件,這正是想要的結(jié)果。然而在這里,用戶可以具有快捷方式,快捷方式可以打亂這種系統(tǒng)的操作,除非采
18取進(jìn)一步的措施。例如用戶可以激活顯示桌面按鈕,該按鈕的功能是使所有應(yīng)用程序窗口都被最小化。在這種情況下,透明窗口 120、123和IM會(huì)與應(yīng)用程序窗口 117—起被最小化,即使透明窗口 120、123和124是透明的并且不容易被用戶辨別。圖16描繪出用于處理這種情形的示例方法。在圖16中,維持透明窗口 120、123、 1至4的應(yīng)用程序可以檢測(cè)(356)顯示桌面事件,并且通過(guò)以適當(dāng)?shù)腪順序更換(358)透明窗口而響應(yīng)。結(jié)果會(huì)是應(yīng)用程序窗口 117會(huì)被最小化,而透明窗口會(huì)被維持在會(huì)允許與壁紙的可區(qū)別的區(qū)按需交互的順序中。圖15描繪出可以通過(guò)操作系統(tǒng)350提供API 354以便為窗口調(diào)整Z順序,并且操作系統(tǒng)350會(huì)因此維持⑶I映射352。圖17描繪出與圖14的示例有關(guān)的進(jìn)一步的公開。尤其是,圖17描繪出壁紙是Z 順序中的最后那個(gè)(即它離觀看者最遠(yuǎn)),后隨桌面外殼⑶I 178,和諸如窗口 1M、120和 123的一系列透明窗口。這些透明窗口繼而后隨應(yīng)用程序窗口 116和117。在這個(gè)示例中, 由于應(yīng)用程序窗口 117具有最高的Z順序,因此它會(huì)具有焦點(diǎn)。所描繪的每個(gè)窗口都與輸入過(guò)程相關(guān),輸入過(guò)程進(jìn)而將消息事件傳輸給相關(guān)的應(yīng)用程序代碼。為了示例,描繪了輸入過(guò)程402、404、406、408、410和412,用箭頭示出用于輸入過(guò)程的優(yōu)先級(jí),優(yōu)先級(jí)相應(yīng)于輸入過(guò)程相對(duì)的Z順序。因此,對(duì)于工作區(qū)101內(nèi)的任何給定位置,具有最高Z順序并且位于該位置處的與窗口相關(guān)的輸入過(guò)程會(huì)在該位置處接收輸入事件。該輸入過(guò)程繼而會(huì)根據(jù)輸入事件的相關(guān)的應(yīng)用程序代碼而使用該輸入事件。在這個(gè)示例中,應(yīng)用程序代碼414與輸入過(guò)程402相關(guān),應(yīng)用程序代碼416與輸入過(guò)程404相關(guān),并且應(yīng)用程序代碼418與輸入過(guò)程 406,408和410相關(guān)。最后,輸入過(guò)程412與用于外殼420的應(yīng)用程序代碼相關(guān)。圖18、19和20—起用于描述進(jìn)一步的示例實(shí)施方式。圖18描繪出包括元素102、 103和104的基本桌面⑶I 105。圖19描繪出這個(gè)桌面⑶I的副本182,而副本元素183、 184、186相應(yīng)于元素102、103和104。另外,可以諸如通過(guò)使用可區(qū)別的圖形來(lái)識(shí)別副本 ⑶I的子部分。例如,在副本桌面182上提供圖形175和176。透明窗口 180和175分別疊置(superimpose)在子部分176和175上。在圖20中描繪出這些元素的Z順序。正如前面那樣,壁紙107具有最低的Z順序,而桌面外殼GUI 105 (即通過(guò)操作系統(tǒng)維持的真實(shí)的桌面⑶I)接著以Z順序布置。之后,桌面外殼副本182和一個(gè)透明窗口 180可以接著以Z 順序提供(它們以Z順序可以成為可互換的),后隨透明窗口 123。通過(guò)維持⑶I副本182和強(qiáng)制遵從描繪的Z順序的應(yīng)用程序提供輸入事件模型。 輸入事件模型用于檢測(cè)接收的輸入事件是否在被真實(shí)的桌面GUI 105的元素占據(jù)的位置上,如果是,則傳輸將那些輸入事件提供給桌面GUI事件處理器,否則,采取如果桌面GUI已經(jīng)直接接收到那些輸入事件則桌面GUI會(huì)采取的同樣的動(dòng)作。引導(dǎo)到應(yīng)用程序窗口 117的輸入事件不需要通過(guò)輸入事件模型進(jìn)行處理,會(huì)通過(guò)用于該應(yīng)用程序窗口的事件處理器直接接收該輸入事件。利用輸入事件模型可以檢測(cè)輸入事件何時(shí)被引導(dǎo)到可區(qū)別的區(qū)域175和176并且采取適當(dāng)?shù)膭?dòng)作。提供圖21、22A和22B來(lái)描述工作區(qū)調(diào)整大小的多個(gè)方面。圖21以一定的分辨率描繪了工作區(qū)101并且包括應(yīng)用程序窗口 117、被區(qū)域123表明界限的子部分175。如果分辨率下降,則工作區(qū)101的壁紙可以重新調(diào)整,并且在這種境況下,子部分175可以最終與應(yīng)用程序窗口 117相交迭。然而,如圖22B中所示,工作區(qū)還可以在尺寸上擴(kuò)展,并且應(yīng)用程序窗口 117可以位于單獨(dú)的屏幕部分中。工作區(qū)101的子部分可以根據(jù)可用的屏幕真實(shí)情況而調(diào)整大小、重新布置、刪除、或者添加。上面的公開解釋了應(yīng)用程序可以怎樣與壁紙的子部分相關(guān),使得它們可以是激活的或者提供輸出,而不具有全部例示的應(yīng)用程序窗口??梢蕴峁┮环N方法來(lái)維持用于注冊(cè) (register)應(yīng)用程序的API以實(shí)現(xiàn)這種結(jié)果。圖23-25提供與這種方法有關(guān)的公開。圖23 描繪出新的應(yīng)用程序組件502和注冊(cè)過(guò)的應(yīng)用程序組件512每個(gè)都可以與API 506通信。通過(guò)API 506已經(jīng)接收的注冊(cè)過(guò)的應(yīng)用程序512維持定義子部分522的⑶I映射 514,使得子部分522對(duì)于應(yīng)用程序組件512而言是活動(dòng)的。新的應(yīng)用程序組件502建立被提議的(proposed)⑶I映射314 ;被提議的⑶I映射314代表⑶I的被提議的子部分的定義,應(yīng)用程序希望該定義與應(yīng)用程序502相關(guān)(在這里,⑶I映射314定義子部分520)。API 506可以接收⑶I映射314或者用于它定義的子部分的其他相當(dāng)?shù)亩x數(shù)據(jù)。 API 506可以咨詢主⑶I映射(master⑶I map) 510以及定義用于通過(guò)操作系統(tǒng)維持的⑶I 元素的位置的桌面GUI映射310。象最初顯示的那樣,被提議的子部分520與注冊(cè)過(guò)的子部分522交迭。API 506可以改為向新的應(yīng)用程序組件502提議一個(gè)不同的位置。API 506 還可以請(qǐng)求注冊(cè)過(guò)的應(yīng)用程序組件512批準(zhǔn)移動(dòng)子部分522。另外,API 506可以指導(dǎo)包含可以允許值的最大化的多種啟發(fā)或者標(biāo)準(zhǔn)的分辨率進(jìn)程(resolution process),諸如給予可以導(dǎo)致更多收益的應(yīng)用程序以優(yōu)先或優(yōu)先權(quán),并且迫使預(yù)定義的子部分移動(dòng)、刪除或者調(diào)整大小。在又一些實(shí)施方式中,可以允許子部分520與子部分522交迭,并且會(huì)在它們之間建立優(yōu)先級(jí)以確定哪個(gè)子部分應(yīng)該接收交迭區(qū)中的輸入,諸如關(guān)于圖10公開的那樣。圖24A和圖24B描繪出可以通過(guò)API 506或者維持本文描述的⑶I映射數(shù)據(jù)的任何其他進(jìn)程實(shí)施的進(jìn)一步的示例功能。例如,圖24A顯示子部分518目前與文件夾圖標(biāo)524 交迭。API 506可以迫使文件夾圖標(biāo)5 移動(dòng)到非交迭的位置,所圖所示。圖24B描繪出 API 506可以改為將子部分518移動(dòng)到?jīng)]有桌面⑶I元素的另一個(gè)位置。這種行為可能要經(jīng)受用API 506安裝應(yīng)用程序的用戶可用的配置設(shè)置。圖25描繪出在注冊(cè)新的應(yīng)用程序或者現(xiàn)有應(yīng)用程序的新子部分的過(guò)程中可以通過(guò)API 506實(shí)施的示例方法??梢詮膽?yīng)用程序接收(550)注冊(cè)請(qǐng)求,并且作為響應(yīng),可以訪問(wèn)(552)已經(jīng)與注冊(cè)過(guò)的應(yīng)用程序相關(guān)的預(yù)定區(qū)域的映射。將GUI映射314描繪為是可用的存儲(chǔ)數(shù)據(jù)輸入以便訪問(wèn)(552)。同樣,可以訪問(wèn)(554)桌面GUI元素的映射310??梢宰龀?560)被請(qǐng)求的區(qū)域是否可用于分配給請(qǐng)求注冊(cè)的應(yīng)用程序的確定。對(duì)這個(gè)確定的輸入可以是多種配置設(shè)置(566);這種配置包括上述那些示例,諸如用戶是否會(huì)允許移動(dòng)桌面 ⑶I元素,調(diào)整現(xiàn)有的預(yù)定區(qū)域的尺寸等。如果被請(qǐng)求的區(qū)域是可用的,則它可以被分配(564),然而如果被請(qǐng)求的區(qū)域是不可用的,諸如因?yàn)樗耆蛘卟糠直涣硪粋€(gè)預(yù)定區(qū)域或者被桌面GUI元素占據(jù),則可以采取多個(gè)平行的路徑??梢赃M(jìn)行(568)用于確定對(duì)于分配可用的區(qū)域的分辨率進(jìn)程; 這種分辨率進(jìn)程可以包括在競(jìng)爭(zhēng)的應(yīng)用程序、用戶輸入、啟發(fā)和其他機(jī)制當(dāng)中進(jìn)行投標(biāo) (bidding),以分配可用的屏幕真實(shí)狀態(tài)??梢詫⑷魏芜@種被識(shí)別的區(qū)域提議給請(qǐng)求注冊(cè)的應(yīng)用程序(570),并且在接收到肯定響應(yīng)之后,應(yīng)用程序可以進(jìn)行注冊(cè)并且可以將該被提議的可用區(qū)域分配給該新注冊(cè)的應(yīng)用程序(572)。
圖沈描繪出可以被指導(dǎo)以便維持被分配給一個(gè)或多個(gè)應(yīng)用程序的子部分的維護(hù)進(jìn)程(maintenance process)。在一個(gè)示例中,當(dāng)應(yīng)用程序初始化(580)時(shí)或者當(dāng)應(yīng)用程序更新(582)時(shí),可以指導(dǎo)GUI界面的注冊(cè)過(guò)的子部分的更新進(jìn)程(585),包括調(diào)用消息鉤子進(jìn)程586,更新位于外殼進(jìn)程內(nèi)的次要的(secondary)⑶I映射587,或者建立透明窗口和注冊(cè)過(guò)的位置588。這些步驟的每一個(gè)都適于一個(gè)或多個(gè)上述實(shí)施方式。還可以指導(dǎo)檢驗(yàn)適當(dāng)?shù)你^子序列的步驟(590)。圖27描繪出可以實(shí)施這些方面的設(shè)備的示例構(gòu)造。處理模塊620可以包含協(xié)處理器621、數(shù)字信號(hào)處理器622、或者多個(gè)高速緩沖存儲(chǔ)器625和專用集成電路(ASIC)621。 處理模塊620與存儲(chǔ)器模塊640接口,存儲(chǔ)器模塊640可以包含包括隨機(jī)存取存儲(chǔ)器641 以及非易失性存儲(chǔ)器642的元素,非易失性存儲(chǔ)器642可以包括閃速存儲(chǔ)器、硬盤驅(qū)動(dòng)器、 盤驅(qū)動(dòng)器、光學(xué)驅(qū)動(dòng)器、拇指驅(qū)動(dòng)器,或者用于數(shù)據(jù)存儲(chǔ)的任何其他形式因素或者技術(shù)。用戶界面模塊可以包含多個(gè)用戶輸入模式,這些模式包括手勢(shì)605、一個(gè)或多個(gè)照相機(jī)606、鍵盤608、觸摸屏609、與語(yǔ)音識(shí)別耦合的麥克風(fēng)604。可以通過(guò)輸出模塊630提供輸出處理模塊620,輸出模塊630可以包含一些組件,這些組件包括顯示器631、揚(yáng)聲器632 以及觸覺輸出633。包含多個(gè)網(wǎng)絡(luò)接口能力的網(wǎng)絡(luò)接口模塊650也是可用的。網(wǎng)絡(luò)接口能力的示例包括藍(lán)牙655,藍(lán)牙655包含多個(gè)層,這些層包括L2CAP 656、基帶657以及無(wú)線電裝置658??梢蕴峁o(wú)線LAN 660,無(wú)線LAN 660還包括鏈接662、媒體訪問(wèn)控制器(MAC) 664 以及無(wú)線電裝置666。還可以提供蜂窩接口 760,蜂窩接口 760繼而包括鏈接761、MAC 762 和無(wú)線電裝置764。無(wú)線電裝置658、666和764可以是共享的,或者依據(jù)實(shí)施方式而截然不同。可以將這種無(wú)線電裝置實(shí)施為軟件和硬件的結(jié)合。數(shù)據(jù)接口的另一個(gè)示例包括通用串行總線765。雖然出于理解清晰的目的已經(jīng)比較詳細(xì)地描述了上述實(shí)施例,但是本發(fā)明不限于所提供的細(xì)節(jié)。存在實(shí)施本發(fā)明的許多可選的方式。所公開的實(shí)施例是示例性而非限制性的。輸入設(shè)備包含任何人或者機(jī)器輸入接口設(shè)備,作為示例,但不限于鍵盤、小鍵盤、鼠標(biāo)、 觸摸板、指點(diǎn)桿(pointing stick)、軌跡球、光筆、觸摸屏、繪圖板、光筆、游戲桿、運(yùn)動(dòng)傳感器、麥克風(fēng)和跳舞毯。當(dāng)然,關(guān)于哪種設(shè)備可以用于實(shí)施本文公開的多個(gè)方面,通過(guò)示例而非限制來(lái)提供示例系統(tǒng)1100。本領(lǐng)域普通技術(shù)人員可以使本文提供的公開適用于多種設(shè)備,諸如智能電話、平板電腦、膝上型電腦等,可以使用比本文描述的那些組件集成度更高或更低的組件實(shí)施這些設(shè)備,并且這些設(shè)備可以包括比該示例中描繪的功能更多或更少的功能。根據(jù)這些公開的實(shí)施方式可以通過(guò)由操作系統(tǒng)或者賣方提供的下部構(gòu)造進(jìn)行區(qū)分,以更改背景壁紙圖像,這可以類似于編程接口進(jìn)行操作,諸如現(xiàn)在被輕視的Microsoft 的活動(dòng)桌面(Active Desktop)。提供活動(dòng)桌面API以允許網(wǎng)絡(luò)瀏覽器將頁(yè)面顯示成位于桌面GUI的元素的后面。在活動(dòng)的桌面模型中,壁紙不是必須要用的(即,保留的視頻存儲(chǔ)器不用于被顯示的壁紙),而是改為、背景提供的全部例示的瀏覽器窗口??梢赃x擇通過(guò)瀏覽器窗口顯示的頁(yè)面上提供的鏈接。瀏覽器窗口可以不訪問(wèn)本地內(nèi)容,因?yàn)檫@樣做會(huì)違反 (violate)瀏覽器允許模型。本來(lái),瀏覽器窗口僅會(huì)接收桌面外殼會(huì)決定傳遞的用戶輸入, 并且它不會(huì)知道這種桌面GUI元素位于哪兒。如本文描述的不同實(shí)施方式之間的多種其他可區(qū)別的方面對(duì)于本領(lǐng)域技術(shù)人員而言將是顯然的。
在一些實(shí)施例中,與硬件級(jí)102相關(guān)的硬件包括PC兼容的計(jì)算機(jī)、蘋果計(jì)算機(jī)、 UNIX工作站、智能設(shè)備、電話、個(gè)人數(shù)字助理(“PDA”)、蜂窩電話、智能電器、電子書閱讀器、 服務(wù)器、和/或任何計(jì)算機(jī)或者自動(dòng)機(jī)器。在一些實(shí)施例中,操作系統(tǒng)204是Microsoft Windows、Mac OS X、Linux、Android、BREW、Garnet OS、iPhone 或者 Symbian 的一個(gè)版本。除非另有描述,否則可以改變所公開進(jìn)程的元素的執(zhí)行順序,使得示例進(jìn)程在本公開所描繪和描述的方面中使用,但是不意味著對(duì)權(quán)利要求的限制。除非另有陳述,否則可以將諸如描述為被配置成執(zhí)行任務(wù)的處理器或存儲(chǔ)器的組件實(shí)施為通用組件或者專用組件,通用組件被臨時(shí)配置成在給定時(shí)間執(zhí)行該任務(wù),專用組件被制造成執(zhí)行該任務(wù)。正如本文中使用的那樣,術(shù)語(yǔ)“處理器”指的是一個(gè)或多個(gè)設(shè)備、 電路、和/或配置成處理數(shù)據(jù)的處理內(nèi)核,諸如計(jì)算機(jī)程序指令。同樣,計(jì)算機(jī)在感知包含類設(shè)備中使用,這類設(shè)備可以執(zhí)行計(jì)算任務(wù),并且這類設(shè)備可以采用多種多樣的形式因素, 包括智能電話、膝上型電腦、臺(tái)式電腦、移動(dòng)信息設(shè)備、電子書、平板電腦等。計(jì)算機(jī)程序指令可以存儲(chǔ)在任何有形的對(duì)象之上或者之中,有形的對(duì)象可以通過(guò)設(shè)備進(jìn)行讀取或者訪問(wèn),這種有形對(duì)象的示例包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、靜態(tài)隨機(jī)存取存儲(chǔ)器、磁性存儲(chǔ)媒體、光學(xué)存儲(chǔ)媒體、閃存媒體、相變存儲(chǔ)設(shè)備。這種計(jì)算機(jī)可讀媒體可以通過(guò)網(wǎng)絡(luò)或者用于通信信息的其他手段訪問(wèn)。
權(quán)利要求
1.一種系統(tǒng),包含顯不器;處理器;計(jì)算機(jī)可讀媒體存儲(chǔ)外殼進(jìn)程,用于造成圖形用戶界面⑶I的顯示,⑶I包含具有圖標(biāo)的工作區(qū)和在所述工作區(qū)下面的壁紙圖像,并且用于維持關(guān)于所述工作區(qū)上的所述圖標(biāo)的位置的信息;設(shè)備驅(qū)動(dòng)器,用于輸出基于從輸入設(shè)備接收的輸入檢測(cè)到的事件;應(yīng)用程序,用于對(duì)所述工作區(qū)的子部分劃界,并且存儲(chǔ)關(guān)于所述工作區(qū)的所述子部分的邊界的信息;和消息鉤子,其插入在所述設(shè)備驅(qū)動(dòng)器和所述外殼進(jìn)程之間的通信路徑中,可操作成基于確定事件發(fā)生在通過(guò)所述應(yīng)用程序劃界的所述工作區(qū)的所述子部分內(nèi)的所述工作區(qū)的位置處,并且所述事件還不處在所述GUI的任何圖標(biāo)的位置處,將來(lái)自所述事件驅(qū)動(dòng)器的事件有選擇地重新導(dǎo)向到所述應(yīng)用程序。
2.如權(quán)利要求1所述的系統(tǒng),其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包含用于多任務(wù)操作系統(tǒng)OS的計(jì)算機(jī)可執(zhí)行指令,所述多任務(wù)操作系統(tǒng)OS支持用于執(zhí)行任務(wù)的窗口,并且所述消息鉤子進(jìn)一步可操作成確定所述外殼進(jìn)程具有焦點(diǎn)以接收來(lái)自所述輸入設(shè)備的輸入,作為使事件重新導(dǎo)向之前進(jìn)一步的條件。
3.如權(quán)利要求1所述的系統(tǒng),其中所述消息鉤子響應(yīng)于接收事件,投票選舉用于所述工作區(qū)的被劃界的子部分的邊界的應(yīng)用程序。
4.如權(quán)利要求1所述的系統(tǒng),其中所述消息鉤子響應(yīng)于通過(guò)所述應(yīng)用程序?qū)τ谒鲞吔绲母拢瑥乃鰬?yīng)用程序接收所述工作區(qū)的被劃界的子部分的所述邊界。
5.如權(quán)利要求1所述的系統(tǒng),其中所述子部分是所述工作區(qū)的多個(gè)被劃界的子部分之ο
6.如權(quán)利要求1所述的系統(tǒng),其中所述消息鉤子在分配給所述外殼進(jìn)程的存儲(chǔ)器空間中執(zhí)行,并且阻礙被重新導(dǎo)向的事件,否則所述事件會(huì)通過(guò)由多任務(wù)操作系統(tǒng)提供的傳輸系統(tǒng)已經(jīng)達(dá)到所述外殼進(jìn)程。
7.如權(quán)利要求1所述的系統(tǒng),其中所述計(jì)算機(jī)可讀媒體進(jìn)一步包含用于多任務(wù)操作系統(tǒng)OS的計(jì)算機(jī)可執(zhí)行指令,所述多任務(wù)操作系統(tǒng)OS支持用于執(zhí)行任務(wù)的窗口,其中活動(dòng)的任務(wù)可以具有焦點(diǎn)以接收來(lái)自所述輸入設(shè)備的輸入,并且所述消息鉤子可操作成在為該活動(dòng)的任務(wù)分配的存儲(chǔ)器中的空間內(nèi)執(zhí)行。
8.如權(quán)利要求1所述的系統(tǒng),其中所述消息鉤子在分配給所述外殼進(jìn)程的存儲(chǔ)器空間中執(zhí)行,并且復(fù)制通過(guò)所述消息鉤子消耗的但是應(yīng)該由所述外殼進(jìn)程接收的消息,并且輸出那些消息以便由所述外殼進(jìn)程接收。
9.如權(quán)利要求1所述的系統(tǒng),其中所述消息鉤子在使用多任務(wù)操作系統(tǒng)OS的多個(gè)存儲(chǔ)器駐留任務(wù)當(dāng)中的具有目前的焦點(diǎn)的任務(wù)中執(zhí)行,并且只要所述任務(wù)相應(yīng)于所述外殼進(jìn)程,所述消息鉤子就有選擇地使所述事件重新導(dǎo)向。
10.一種方法,包含在計(jì)算機(jī)系統(tǒng)中接收與在顯示器上顯示的圖形用戶界面GUI的一部分工作區(qū)內(nèi)的位置相關(guān)的輸入設(shè)備事件;確定所述位置處在應(yīng)用程序的任何被顯示的窗口之外,還處在所述GUI的被顯示的工作區(qū)圖標(biāo)元素之外,并且處在與應(yīng)用程序相關(guān)的一部分所述工作區(qū)之內(nèi);和作為響應(yīng),將所述輸入設(shè)備事件處理成用于與所述部分工作區(qū)相關(guān)的所述應(yīng)用程序的事件。
11.如權(quán)利要求10所述的方法,其中與所述應(yīng)用程序事件相關(guān)的所述應(yīng)用程序使用所述部分工作區(qū)提供至少一些功能。
12.如權(quán)利要求11所述的方法,其中所述應(yīng)用程序使用在處理所述輸入設(shè)備事件期間激活的窗口提供附加功能。
13.如權(quán)利要求10所述的方法,其中與所述應(yīng)用程序相關(guān)的所述部分工作區(qū)在所述工作區(qū)的壁紙背景中是視覺可區(qū)分的。
14.如權(quán)利要求13所述的方法,其中所述壁紙可通過(guò)所述應(yīng)用程序更新。
15.如權(quán)利要求13所述的方法,其中所述應(yīng)用程序從在所述計(jì)算機(jī)系統(tǒng)處可用的圖像庫(kù)選擇圖像,以便在從所述壁紙背景的剩余部分視覺區(qū)分所述部分工作區(qū)的過(guò)程中使用。
16.如權(quán)利要求10所述的方法,其中通過(guò)插入在用于產(chǎn)生所述輸入設(shè)備事件的輸入設(shè)備的設(shè)備驅(qū)動(dòng)器和維持所述GUI的操作系統(tǒng)的外殼之間的消息鉤子執(zhí)行所述確定和處理。
17.如權(quán)利要求10所述的方法,其中與所述應(yīng)用程序相關(guān)的所述部分工作區(qū)在存儲(chǔ)在保留的視頻存儲(chǔ)器中的所述工作區(qū)的壁紙背景中是視覺可區(qū)分的。
18.如權(quán)利要求10所述的方法,其中所述輸入設(shè)備事件是通過(guò)輸入設(shè)備控制的左擊、 右擊和根據(jù)所述GUI的指針位置定位的盤旋事件的一個(gè)或多個(gè)。
19.如權(quán)利要求10所述的方法,其中所述部分工作區(qū)是與所述應(yīng)用程序相關(guān)的多個(gè)工作區(qū)部分之一,并且為所述多個(gè)工作區(qū)部分執(zhí)行所述確定。
20.如權(quán)利要求10所述的方法,其中如果所確定的輸出是所述位置處在所述GUI的被顯示的工作區(qū)圖標(biāo)元素內(nèi),則將所述輸入設(shè)備事件提供給維持所述GUI的外殼進(jìn)程。
21.如權(quán)利要求10所述的方法,其中基于當(dāng)所述輸入設(shè)備事件被接收到時(shí)維持所述 GUI的外殼進(jìn)程是否具有輸入焦點(diǎn)而執(zhí)行所述位置是在應(yīng)用程序的任何被顯示的窗口之外的所述確定。
22.如權(quán)利要求10所述的方法,其中通過(guò)對(duì)維持所述GUI的操作系統(tǒng)的外殼的擴(kuò)展而執(zhí)行所述接收。
23.一種方法,包含為計(jì)算機(jī)系統(tǒng)提供相互交迭的多個(gè)圖形用戶界面GUI,所述計(jì)算機(jī)系統(tǒng)被耦合成從一個(gè)或多個(gè)用戶輸入設(shè)備接收輸入;通過(guò)識(shí)別主要⑶I確定所述多個(gè)⑶I中的哪個(gè)⑶I是接收的每個(gè)所述輸入的目的地, 所述主要⑶I包含與通過(guò)系統(tǒng)進(jìn)程維持的應(yīng)用程序和資源有關(guān)的圖標(biāo),使所述主要GUI成為用于與所述主要GUI的圖標(biāo)有關(guān)的每個(gè)輸入的目的地,和對(duì)于與所述主要GUI的任何圖標(biāo)無(wú)關(guān)的每個(gè)輸入,確定該輸入是否與通過(guò)所述多個(gè) GUI的任何其他的GUI定義的被表明界限的區(qū)域有關(guān),并且如果所述輸入被確定為與每個(gè)都與不同的GUI有關(guān)的多于一個(gè)被表明界限的區(qū)域有關(guān),則根據(jù)那些GUI的預(yù)定優(yōu)先級(jí)確定目的地⑶I。
24.一種計(jì)算機(jī)系統(tǒng),包含處理器,其與存儲(chǔ)計(jì)算機(jī)可執(zhí)行代碼的計(jì)算機(jī)可讀媒體耦合,以使所述處理器去執(zhí)行;外殼進(jìn)程,用于維持包含處在被分配位置處的多個(gè)圖標(biāo)的圖形用戶界面⑶I,以便顯示在顯示器上,其中所述多個(gè)圖標(biāo)被顯示在靜態(tài)背景圖像上; 設(shè)備驅(qū)動(dòng)器,其通過(guò)接口連接以接收來(lái)自輸入設(shè)備的輸入; 過(guò)濾器,其通過(guò)接口連接以接收來(lái)自所述設(shè)備驅(qū)動(dòng)器的所述輸入,并且可操作成 確定與所述輸入有關(guān)的顯示位置,從所述外殼進(jìn)程獲得用于所述GUI的圖標(biāo)的被分配的位置信息, 確定與所述輸入有關(guān)的所述顯示位置是否處在用于任何所述GUI圖標(biāo)的被分配的位置內(nèi),如果是,則使所述外殼進(jìn)程接收所述輸入,如果否,則確定所述顯示位置是否被分配給應(yīng)用程序的可控區(qū),并且如果是則激活用于執(zhí)行所述應(yīng)用程序的進(jìn)程。
25.一種計(jì)算機(jī)系統(tǒng),包含 顯不器;處理器;計(jì)算機(jī)可讀媒體,其存儲(chǔ)計(jì)算機(jī)可執(zhí)行代碼以使所述處理器去執(zhí)行; 進(jìn)程,用于維持主要圖形用戶界面⑶I以便顯示在顯示器上,所述顯示器被耦合成接收?qǐng)D形輸出,所述主要⑶I包含處在被分配位置內(nèi)的多個(gè)圖標(biāo);進(jìn)程,維持用于與所述主要⑶I同時(shí)顯示的次要⑶I,所述次要⑶I包含背景圖像和一個(gè)或多個(gè)區(qū)域,所述次要GUI可以與分配給所述主要GUI的圖標(biāo)的位置相交迭;和進(jìn)程,只要所述輸入不處在所述主要GUI的圖標(biāo)的位置處并且處在所述次要GUI的所述一個(gè)或多個(gè)區(qū)域內(nèi),用于接收與所述顯示器有關(guān)的用戶輸入事件并確定所述用戶輸入事件與所述次要GUI有關(guān),并且作為響應(yīng),根據(jù)分配給所述次要GUI的所述一個(gè)或多個(gè)區(qū)域的動(dòng)作使所述用戶輸入事件被處理。
26.如權(quán)利要求25所述的系統(tǒng),其中用于接收所述用戶輸入事件的所述進(jìn)程與維持所述主要GUI的所述進(jìn)程結(jié)合以獲得所述主要GUI圖標(biāo)的被分配位置,并且與維持所述次要 GUI的所述進(jìn)程結(jié)合以獲得所述一個(gè)或多個(gè)區(qū)域的邊界的定義。
27.一種計(jì)算機(jī)系統(tǒng),包含外殼進(jìn)程,用于提供包含位于所述GUI桌面上的多個(gè)界面元素的GUI桌面; 存儲(chǔ)器部分,其被保留用于使靜態(tài)背景圖像被顯示在所述GUI桌面工作區(qū)的后面,使得所述背景圖像被所述GUI的所述界面元素遮掩;和具有多個(gè)組件的傳輸子系統(tǒng),所述傳輸子系統(tǒng)按照預(yù)定的序列順序相互通信消息,每個(gè)組件都鏈接到各自的應(yīng)用程序并且與所述背景圖像的各自的預(yù)定區(qū)相關(guān),并且可操作成響應(yīng)于接收代表來(lái)自輸入資源的輸入的消息,確定所述消息是否指示事件處在所述背景圖像的其各自的預(yù)定區(qū)之內(nèi)并且處在通過(guò)所述GUI桌面的界面元素占據(jù)的任何位置之外,并且如果是,則傳輸其各自的應(yīng)用程序,而如果否,則將所述接收消息按照所述傳輸子系統(tǒng)的序列順序傳遞給后續(xù)組件。
28.如權(quán)利要求沈所述的計(jì)算機(jī)系統(tǒng),進(jìn)一步包含設(shè)備驅(qū)動(dòng)器,用于從用戶輸入設(shè)備接收數(shù)據(jù)和使所述數(shù)據(jù)耦合到所述傳輸子系統(tǒng)中。
29.一種計(jì)算機(jī)系統(tǒng),包含設(shè)備驅(qū)動(dòng)器,用于從用戶輸入設(shè)備接收輸入;外殼進(jìn)程,用于提供包含多個(gè)界面元素的GUI桌面工作空間;視頻存儲(chǔ)器的預(yù)分配部分,用于存儲(chǔ)用于在顯示器上顯示的背景圖像,以便同時(shí)顯示在所述GUI桌面工作空間的后面,使得所述背景圖像在所述顯示器上僅在不存在所述GUI 桌面工作空間的元素之處是可見的;進(jìn)程,用于將所述顯示器的區(qū)域定義為可控區(qū),并且用于在視頻存儲(chǔ)器的所述預(yù)分配部分中更新所述背景圖像以使所述可控區(qū)與所述背景圖像的其余部分可區(qū)分;和進(jìn)程,其結(jié)合成通過(guò)所述設(shè)備驅(qū)動(dòng)器接收所述輸入并且將所述輸入傳遞給所述外殼進(jìn)程,除非與所述輸入相關(guān)的所述顯示器的位置處在所述可控區(qū)之內(nèi),并且不在所述GUI桌面工作空間的元素之內(nèi),并且接著采取通過(guò)所述進(jìn)程定義的動(dòng)作。
30.一種系統(tǒng),包含 顯不器;處理器;計(jì)算機(jī)可讀媒體,存儲(chǔ)多任務(wù)操作系統(tǒng)0S,用于支持有窗口的應(yīng)用程序;第一組計(jì)算機(jī)可執(zhí)行指令,用于實(shí)施外殼,以便使所述處理器定義具有工作區(qū)和背景壁紙圖像的外殼圖形用戶界面GUI,和維持關(guān)于所述GUI元素的位置的信息,其中GUI元素包含用于在所述OS上執(zhí)行的應(yīng)用程序的窗口,并且可以顯示圖標(biāo);應(yīng)用程序,用于對(duì)所述工作區(qū)的子部分劃界,并且記錄關(guān)于所述工作區(qū)的所述子部分的邊界的信息;設(shè)備驅(qū)動(dòng)器,用于與輸入設(shè)備接口 ;和第二組計(jì)算機(jī)可執(zhí)行指令,用于使所述處理器與所述設(shè)備驅(qū)動(dòng)器耦合以便接收鏈接到所述工作區(qū)上的一位置的輸入事件,請(qǐng)求關(guān)于來(lái)自所述外殼的所述圖標(biāo)的位置的信息,確定鏈接到所述輸入事件的所述位置是否(1)處在所述工作區(qū)的所述子部分之內(nèi),和(2)不是所述外殼GUI的元素的位置,并且響應(yīng)成將所述輸入事件從所述外殼重新導(dǎo)向到所述應(yīng)用程序。
31.一種計(jì)算機(jī)系統(tǒng),包含 處理器;顯示器,其耦合成顯示通過(guò)所述處理器產(chǎn)生的輸出;界面,其耦合成接收來(lái)自輸入設(shè)備的輸入,每個(gè)輸入都與所述顯示器上各自的位置相關(guān);存儲(chǔ)器子系統(tǒng),包含一個(gè)或多個(gè)計(jì)算機(jī)可讀媒體,存儲(chǔ)計(jì)算機(jī)可執(zhí)行代碼,用于多任務(wù)操作系統(tǒng),其中應(yīng)用程序可以在各自的窗口中執(zhí)行,和計(jì)算機(jī)可執(zhí)行代碼,用于使事件處理器引導(dǎo)來(lái)自在多個(gè)圖形界面當(dāng)中的所述輸入設(shè)備的輸入,所述多個(gè)圖形界面每個(gè)都與各自的應(yīng)用程序相關(guān),每個(gè)都具有分配給所述顯示器的各自的子部分的一個(gè)或多個(gè)元素,并且其中所述多個(gè)圖形界面全部都按照預(yù)定順序疊置以便在所述顯示器上顯示,所述事件處理器確定所述應(yīng)用程序之一通過(guò)以所述預(yù)定順序識(shí)別第一圖形界面而接收每個(gè)輸入,所述第一圖形界面在與該輸入相關(guān)的所述顯示器的位置處具有一元素。
32.一種系統(tǒng),包含; 輸入設(shè)備; 顯不器;處理器,其耦合到所述輸入設(shè)備和所述顯示器,并被配置成維持包含工作區(qū)的圖形用戶界面GUI,其中可以顯示圖標(biāo)、用于應(yīng)用程序的窗口、和背景圖像;接收與所述顯示器的位置相關(guān)的輸入設(shè)備事件,在所述顯示器的位置中僅顯示所述背景圖像,確定所述位置是否處在與應(yīng)用程序相關(guān)的一部分所述背景圖像之內(nèi),和作為響應(yīng),傳送具有關(guān)于所述輸入設(shè)備事件的信息的所述應(yīng)用程序。
33.如權(quán)利要求32所述的系統(tǒng),其中具有關(guān)于所述輸入設(shè)備事件的信息的被傳送的所述應(yīng)用程序可以提供至少一些應(yīng)用程序功能而不使用應(yīng)用程序窗口。
34.一種嵌入在計(jì)算機(jī)可讀存儲(chǔ)媒體中并且包含計(jì)算機(jī)指令以便將計(jì)算機(jī)配置成執(zhí)行一種方法的計(jì)算機(jī)程序產(chǎn)品,包含接收輸入設(shè)備事件,所述事件與并非應(yīng)用程序窗口或者工作區(qū)圖標(biāo)元素的顯示器的一部分工作區(qū)中的位置相關(guān);和至少部分基于確定所述輸入設(shè)備事件與所述工作區(qū)的應(yīng)用程序相關(guān)的位置相關(guān)而將所述輸入設(shè)備事件處理成應(yīng)用程序事件。
35.一種計(jì)算機(jī)程序產(chǎn)品,其在有形的計(jì)算機(jī)可讀媒體上提供,所述計(jì)算機(jī)程序產(chǎn)品包含用于擴(kuò)展由操作系統(tǒng)OS提供的圖形用戶界面GUI的框架,所述框架包含過(guò)濾器,其被插入在用于輸入設(shè)備的驅(qū)動(dòng)器和維持所述GUI的所述OS的進(jìn)程之間,所述過(guò)濾器可操作成接收來(lái)自所述驅(qū)動(dòng)器的輸入事件,響應(yīng)于確定輸入事件要通過(guò)該應(yīng)用程序接收,傳輸多個(gè)應(yīng)用程序的每個(gè);和判優(yōu)器,其可操作成從每個(gè)應(yīng)用程序接收要求所述GUI的一部分工作區(qū)與該應(yīng)用程序相關(guān)的信息,以便為由多于一個(gè)應(yīng)用程序要求的所述工作區(qū)的任何部分確定優(yōu)先級(jí),和使所述GUI的被要求的部分的規(guī)格和所述優(yōu)先級(jí)對(duì)于所述過(guò)濾器是可用的,其中所述過(guò)濾器可操作成識(shí)別和由應(yīng)用程序要求的所述工作區(qū)的任何部分有關(guān)的輸入事件的子集,并且對(duì)于與由多個(gè)應(yīng)用程序要求的一部分所述工作區(qū)有關(guān)的所述子集的任何輸入事件,使用所述優(yōu)先級(jí)信息來(lái)識(shí)別應(yīng)用程序以接收所述子集的每個(gè)輸入事件。
36.如權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述過(guò)濾器是虛擬設(shè)備驅(qū)動(dòng)器,所述虛擬設(shè)備驅(qū)動(dòng)器與用于輸入設(shè)備的設(shè)備驅(qū)動(dòng)器耦合,并且耦合到用于傳遞與通過(guò)任何所述應(yīng)用程序要求的部分所述工作區(qū)有關(guān)的輸入的傳輸子系統(tǒng)。
37.一種計(jì)算機(jī)程序產(chǎn)品,其在有形的計(jì)算機(jī)可讀媒體上提供,所述計(jì)算機(jī)程序產(chǎn)品包含用于補(bǔ)充由操作系統(tǒng)OS提供的圖形用戶界面GUI的框架,所述框架包含過(guò)濾器,其被插入在用于輸入設(shè)備的驅(qū)動(dòng)器和維持所述GUI的進(jìn)程之間,所述過(guò)濾器可操作成接收來(lái)自所述驅(qū)動(dòng)器的輸入事件,響應(yīng)于確定輸入事件是通過(guò)該應(yīng)用程序接收的,傳送多個(gè)應(yīng)用程序的每個(gè);和判優(yōu)器,其可操作成為通過(guò)多于一個(gè)應(yīng)用程序要求的所述工作區(qū)的任何部分分配優(yōu)先級(jí),和使所述GUI的所述被要求的部分的規(guī)格和所述優(yōu)先級(jí)對(duì)于所述過(guò)濾器是可用的,其中所述過(guò)濾器可操作成識(shí)別與由應(yīng)用程序要求的所述工作區(qū)的任何部分有關(guān)的輸入事件的子集,并且對(duì)于和通過(guò)多個(gè)應(yīng)用程序要求的一部分所述工作區(qū)有關(guān)的所述子集的任何輸入事件,使用所述優(yōu)先級(jí)信息來(lái)識(shí)別應(yīng)用程序以接收所述子集的每個(gè)輸入事件。
38.一種存儲(chǔ)計(jì)算機(jī)可執(zhí)行代碼的有形的計(jì)算機(jī)可讀媒體,包含 計(jì)算機(jī)可執(zhí)行代碼,用于應(yīng)用程序編程接口 API,用于通過(guò)使圖形用戶界面GUI區(qū)域的預(yù)定部分與所述應(yīng)用程序相關(guān),注冊(cè)具有輸入設(shè)備事件過(guò)濾器的應(yīng)用程序,其中所述⑶I區(qū)域包含位于預(yù)定位置內(nèi)的圖標(biāo), 并且其中,在執(zhí)行期間所述輸入設(shè)備事件過(guò)濾器可操作成 接收與所述GUI的位置有關(guān)的輸入事件,和確定所述輸入事件的位置不是GUI圖標(biāo)的預(yù)定位置,和確定所述輸入事件的位置處在與所述注冊(cè)過(guò)的應(yīng)用程序相關(guān)的所述GUI區(qū)域的所述預(yù)定部分中,并且做出響應(yīng)以傳輸具有關(guān)于所述輸入事件的信息的所述應(yīng)用程序。
39.一種方法,包含截取來(lái)自輸入設(shè)備的輸入事件,否則所述事件會(huì)通過(guò)維持顯示器上的圖形用戶界面的外殼進(jìn)程已經(jīng)接收到,其與耦合到所述輸入設(shè)備的計(jì)算設(shè)備耦合; 確定與所述輸入事件有關(guān)的所述圖形用戶界面的位置;和確定在該位置處不存在所述圖形用戶界面的元素,并且無(wú)應(yīng)用程序具有焦點(diǎn)以接收所述輸入事件,并且所述位置與和應(yīng)用程序相關(guān)的所述圖形用戶界面的預(yù)定區(qū)域有關(guān),并且做出響應(yīng)使消息中的所述輸入事件重新導(dǎo)向成通過(guò)所述應(yīng)用程序接收。
40.一種有形的計(jì)算機(jī)可讀媒體,包含計(jì)算機(jī)可執(zhí)行代碼,用于當(dāng)所述應(yīng)用程序載入以開始在計(jì)算環(huán)境中執(zhí)行時(shí),使消息鉤子插入到應(yīng)用程序的存儲(chǔ)器段中;和計(jì)算機(jī)可執(zhí)行代碼,用于使所述計(jì)算環(huán)境維持包含可重新導(dǎo)向的輸入事件的輸入事件模型,其中所述消息鉤子包含計(jì)算機(jī)可執(zhí)行代碼,用于從所述輸入事件模型獲得關(guān)于是否將輸入事件從通過(guò)所述應(yīng)用程序定義的事件處理器重新導(dǎo)向到另一個(gè)事件處理器,所述輸入事件在所述輸入事件模型中映射到可重新導(dǎo)向的輸入事件。
41.如權(quán)利要求40所述的有形的計(jì)算機(jī)可讀媒體,其中用于使消息鉤子插入的所述計(jì)算機(jī)可執(zhí)行代碼使用通過(guò)操作系統(tǒng)提供的編程接口,以在所述消息鉤子載入以開始執(zhí)行時(shí),將所述消息鉤子作為利用傳輸鏈的其他元素載入的元素添加到所述應(yīng)用程序的所述存儲(chǔ)器段中。
全文摘要
本發(fā)明涉及用于動(dòng)態(tài)背景用戶界面(多個(gè)界面)的系統(tǒng)和方法。一些方面涉及提供用于應(yīng)用程序的圖形界面,圖形界面之下通過(guò)操作系統(tǒng)外殼提供。在示例中,輸入設(shè)備(例如鼠標(biāo))產(chǎn)生與圖形顯示的位置相關(guān)的事件。事件被與應(yīng)用程序結(jié)合提供的代碼段截取,應(yīng)用程序確定位置是否與和用于應(yīng)用程序的圖形界面的可控區(qū)相關(guān)的顯示器的被定義部分相關(guān),并且該位置還不與OS外殼圖形界面的元素(并且如果可應(yīng)用,另一個(gè)應(yīng)用程序的活動(dòng)的窗口)相關(guān)。如果那些條件成立,則將事件重新導(dǎo)向到應(yīng)用程序,應(yīng)用程序可以變成活動(dòng)的或者采取一個(gè)或多個(gè)動(dòng)作。在具體示例中,顯示器的被定義部分在存儲(chǔ)在視頻存儲(chǔ)器中的壁紙圖像上是視覺可區(qū)分的。
文檔編號(hào)G06F3/00GK102460344SQ201080036131
公開日2012年5月16日 申請(qǐng)日期2010年6月18日 優(yōu)先權(quán)日2009年6月19日
發(fā)明者W·S·斯蒂瓦特 申請(qǐng)人:莫門特美國(guó)股份有限公司