本發明專利技術公開了一種視窗顯示的方法。該方法包括在用于開啟視窗的API上掛上API掛鉤,該API掛鉤用于指定視窗的顯示位置為輸入桌面;運行掛上API掛鉤的API以開啟視窗。通過本發明專利技術可以保證視窗開在正確的桌面上,尤其是可以克服Windows Vista Service Pack1操作系統環境下,采用虛擬桌面時視窗一律開在默認桌面的問題。
【技術實現步驟摘要】
本專利技術涉及操作系統中,尤其是一種更改視窗顯示桌面 的方法。
技術介紹
計算機技術與應用進展快速,已經涵蓋了人們生活的各個方面。為了 適應每個人不同的需求,個人計算機內都設置有自己的系統配置、慣用程 序和文檔。為了要隨時在自己熟悉的系統配置中,使用慣用的程序,處理 自己的文檔,許多使用者會隨身攜帶自己的筆記本計算機。但由于重量和 體積,即使是筆記本計算機,依然是攜帶上的一大負擔。最好的方式是能將文件、系統配置、程序打包,放在外部存儲裝置中(例如u盤、或外接 式硬盤、甚至服務器),只要攜帶此外部存儲裝置,接上學校、網吧、公 司、家里或其它地方的任何計算機,即可將熟悉的一切重現。此種技術即 為虛擬環境技術。虛擬環境是一個特殊的程序,在計算機的操作系統上執 行。利用虛擬環境,使用者可以動態地將計算機的操作系統調整成使用者 熟悉的文件、系統配置、慣用程序,以方便使用。專利技術人在實現本專利技術的過程中發現現有技術至少存在如下問題當使 用者采用的操作系統是Windows Vista Service Packl ,使用者利用現有虛 擬環境技術創建虛擬桌面后,當使用者試圖打開虛擬桌面上的視窗時,該 視窗會出現在默認的本地桌面上,而不是其應該出現的輸入桌面(目前顯 示的桌面)。例如,使用者默認的本地桌面為default,利用虛擬環境技術 創建的虛擬桌面為boxl,當使用者點擊虛擬桌面boxl上的"我的電腦" 時,該對應于"我的電腦"的視窗會出現在默認的桌面default上,而不是出現在其本應該出現的虛擬桌面boxl上,造成虛擬桌面上看不到自己所 建立的視窗。專利技術內容本專利技術的目的是解決視窗出現的桌面不正確的問題,實現視窗顯示在正 確的桌面。為實現上述目的,本專利技術提供了一種,包括 在用于開啟視窗的API上掛上API掛鉤,該API掛鉤用于指定視窗的顯 示位置為輸入桌面;運行掛上API掛鉤的API以開啟4a窗。其中,可以通過雙擊輸入桌面上的資源管理器圖標或從"開始"菜單中 選取資源管理器啟動輸入桌面的資源管理器。這種情況下,所述在用于開啟視窗的API上掛上API掛鉤包括在輸入 桌面的資源管理器程序的創建線程API上掛上API掛鉤,該API掛鉤進一步 調用改變桌面屬性的API,將桌面屬性設定為輸入桌面。或者,可以通過熱^t或者命令列的方式啟動輸入桌面的資源管理器。這種情況下,所述在用于開啟視窗的API上掛上API掛鉤包括在默認 桌面的資源管理器的創建進程API掛上API掛鉤,該API掛鉤進一步調用輸 入桌面的同名API。由上述技術方案可知,本專利技術通過在開啟資源管理器視窗的相關API上 掛上掛鉤,具有以下有益效果保證資源管理器視窗開在正確的桌面上。下面通過附圖和實施例,對本專利技術的技術方案做進一步的詳細描述。附圖說明圖1為本專利技術實施例一的流程圖; 圖2為本專利技術實施例二的流程圖;圖3為本專利技術實施例三的流程圖。 具體實施例方式為了更好地理解本專利技術,首先簡要描述本專利技術所涉及的術語。桌面(desktop):梯:作系統的畫面,稱為桌面。 一個操作系統可以同時 有多個桌面,但一次只顯示一個桌面。每個桌面有一個辨識用的名稱,默認 的桌面名稱為"Default"。輸入桌面(InputDesktop):即使啟用多個桌面,但一次只能顯示一個桌 面。顯示中的桌面稱為輸入桌面。由于現有技術中不論在虛擬桌面還是默認 桌面打開視窗,視窗均會顯示在默認桌面中。因此,對于在虛擬桌面打開視 窗卻出現在默認桌面這種顯示是有問題的,本專利技術也正是主要解決該問題, 所以,本專利技術實施例中無特殊說明,所指的輸入桌面為虛擬桌面,由于可能 存在多個虛擬桌面,以一個虛擬桌面為例,以boxl為例。資源管理器即explorer.exe程序。此程序負責顯現及管理桌面相關的程 序,沒有運行此程序,桌面將是一片荒蕪,用戶完全無法操作桌面。應用編程接口 ( Application Programming Interface, API):供應用程序調用 的函數。本專利技術中涉及的API包括用于建立任何進程的ShellExecuteEx函數, 用于建立遠端線程的CreateRemoteThread函數,用于建立本地線程的 CreateThread函數,用于更改桌面屬性(Desktop )的SetThreadDesktop函數, 其中,桌面屬性(Desktop)即為顯示的桌面,如是在默認桌面(default)顯 示,還是在虛擬桌面(如boxl)顯示。API桂鉤(API Hook):以攔截的手法,在運行的程序內插入自定義程 序,以改變作用。進程(Process):運行中的程序, 一個進程至少有一個線程。線程(Thread):線程是程序的運行單位。任何程序執行時,都是由一 個主線程開始,然后視需要增加線程。當一個程序的線程個數為0時,程序結束。圖1為本專利技術實施例一的流程圖,包括 步驟ll:在用于開啟視窗的API上掛上API掛鉤,該API掛鉤用于指定 視窗的顯示位置為輸入桌面。其中,使用者可以通過雙擊輸入桌面上的 explorer.exe圖標或從"開始,,菜單中選取explorer.exe以啟動explorer.exe進 程(具體對應于下面的實施例二),這種情況下,用于開啟視窗的API為 CreateThread函數;或者,使用者可以通過輸入桌面上的熱鍵"win鍵+E鍵,, 的方式或利用命令列的方式啟動explorer.exe進程(具體對應于下面的實施例 三),這種情況下,用于開啟^L窗的API為ShellExecuteEx函數。 步驟12:運行掛上API掛鉤的API以開啟視窗。本實施例通過設置API掛鉤,在掛鉤程序中指定^L窗的顯示位置為輸入 桌面,使視窗可以顯示在輸入桌面上,從而避免現有技術中資源管理器視窗 一律顯示在默認桌面的問題。圖2為本專利技術實施例二的流程圖,包括 步驟21:在輸入桌面(Boxl)上,使用者通過雙擊explorer.exe圖標或 從"開始"菜單中選取explorer.exe程序。在虛擬桌面boxl上,當通過雙擊 explorer.exe圖標或從"開始"菜單中選取explorer.exe程序時,不會開啟進程, 只調用CreateThread函數開啟一個線程。現有技術存在的問題是雖然該線 程的位置在boxl,但是此線程開出來的視窗卻是在default桌面。因此,本實 施例需要對該CreateThread函數進行處理,以便使視窗開在正確的位置。 步驟22:調用該CreateThread函數,以開啟輸入桌面的i見窗。 步驟23:在該CreateThread函數掛上API桂鉤,該API桂鉤會調用 SetThreadDesktop函數,通過該SetThreadDesktop函數設定該用于開啟視窗的 線程的桌面屬性(Desktop)為輸入桌面(Boxl)。通過設置桌面屬性,可以 保證視窗開在正確的位置上,如在輸入桌面上開啟視窗,該視窗將正確地出 現在輸入桌面上。步驟24:運行掛上SetThreadDesktop函數的CreateThread函數,開啟視 窗。由于SetThreadDesktop函數已將桌面屬性設置為輸入桌面,因此該視窗 將會出現在輸入桌面上。本實施例給出了通過雙擊explo本文檔來自技高網...
【技術保護點】
一種視窗顯示的方法,其特征在于,包括: 在用于開啟視窗的API上掛上API掛鉤,該API掛鉤用于指定視窗的顯示位置為輸入桌面; 運行掛上API掛鉤的API以開啟視窗。
【技術特征摘要】
【專利技術屬性】
技術研發人員:謝威領,
申請(專利權)人:優諾威訊國際有限公司,
類型:發明
國別省市:HK[]
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。