專利名稱:在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Windows平臺上的報警通知管理,具體涉及在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法。
背景技術(shù):
在Windows操作系統(tǒng)中的用戶界面顯示,由多個相互隔離區(qū)域一Session組成,每個Session對應一個獨立的顯示區(qū)域,Windows操作系統(tǒng)通過對不同Session的切換,完成登錄、鎖定、注銷等操作狀態(tài)下的用戶界面顯示。目前在現(xiàn)有技術(shù)中,由于僅處理了用戶進程啟動后登錄操作狀態(tài)下的最前端顯示,而當發(fā)生鎖定、注銷等操作狀態(tài)切換時,由于Session的切換,因此Session對應的顯示區(qū)域發(fā)生切換,導致了特殊情況下報警通知無法顯示的問題。綜上所述,在現(xiàn)有技術(shù)中,最前端顯示的報警通知方法存在可靠性差、通用性差的缺點。
發(fā)明內(nèi)容
本發(fā)明是為解決上述現(xiàn)有技術(shù)中存在的不足之處,提供一種在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,該最前端顯示的報警通知方法具有通用性。為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下
本發(fā)明的在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,包括以下步驟 步驟一、服務進程監(jiān)視Session列表變更
Session 列表由若干個 Session 組成,即由 Session。, Sessionl…SessionN 組成; 所述Session包括Session狀態(tài)和Session標識符;
所述Session狀態(tài)包括激活、鎖定、解鎖、斷開;
所述Session標識符為Session標識符0,Session標識符I…Session標識符N ;服務進程利用Windows操作系統(tǒng)提供的API接口監(jiān)視Session列表變更如果收到Session列表變更通知,執(zhí)行步驟二 ;如果未收到Session列表變更通知,執(zhí)行步驟一;步驟二、服務進程分析Session列表變更通知
服務進程利用Windows操作系統(tǒng)提供的API接口獲取Session列表;
服務進程檢查Session列表中的每個Session,選取Session狀態(tài)為激活的Session,并將Session狀態(tài)為激活的Session的Session標識符保存在服務進程內(nèi)存中;
步驟三、服務進程為每個Session狀態(tài)為激活的Session分別啟動新用戶進程
服務進程使用保存在服務進程內(nèi)存中的Session標識符作為參數(shù),為該Session標識符對應的Session啟動新用戶進程;
服務進程刪除保存在服務進程內(nèi)存中的所有Session標識符;
步驟四、設(shè)定一個Session只對應一個用戶進程
用戶進程將其對應的Session的Session標識符保存在用戶進程內(nèi)存中,在用戶進程內(nèi)存中查找是否存在與該Session標識符相同的Session標識符,如果存在,用戶進程將其存入用戶進程內(nèi)存中的其對應的Session的Session標識符從內(nèi)存中刪除,結(jié)束該用戶進程,執(zhí)行步驟一;如果不存在,執(zhí)行步驟五;
步驟五、新建且其Session狀態(tài)為激活的Session對應的用戶進程在該Session最前端顯示報警通知
新建且其Session狀態(tài)為激活的Session對應的用戶進程從服務進程讀取報警通知; 該用戶進程將報警通知所在窗口的層疊屬性設(shè)置為最前端顯示;
該用戶進程通過改變報警通知所在窗口的屬性使報警通知更明顯;
所述窗口的屬性為窗口的文字亮度、默認文字顏色及默認文字尺寸; 步驟六、當前Session狀態(tài)為激活的Session對應的用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更
當前Session狀態(tài)為激活的Session對應的用戶進程利用Windows操作系統(tǒng)提供的API接口監(jiān)視其對應的Session的Session狀態(tài)變更如果收到Session狀態(tài)變更通知,則將該變更后的Session狀態(tài)保存在用戶進程內(nèi)存中,執(zhí)行步驟七;如果未收到Session狀態(tài)變更通知,執(zhí)行步驟六;
步驟七、Session狀態(tài)發(fā)生變更的Session對應的用戶進程分析已收到的Session狀態(tài)變更通知
Session狀態(tài)發(fā)生變更的Session對應的用戶進程判斷保存在用戶進程內(nèi)存中的該變更后的Session狀態(tài)是否為鎖定如果為鎖定,則使用Session標識符0為參數(shù),通知服務進程,執(zhí)行步驟六;
服務進程接收到該用戶進程發(fā)送的Session標識符0后,服務進程將Session標識符0保存在服務進程內(nèi)存中,執(zhí)行步驟三;
如果Session狀態(tài)發(fā)生變更的Session對應的用戶進程判斷保存在用戶進程內(nèi)存中的該變更后的Session狀態(tài)不為鎖定,則判斷該變更后的Session狀態(tài)是否為解鎖,如果為解鎖,判斷SessionO的Session狀態(tài)是否為激活,如果為激活,執(zhí)行步驟六,如果不為激活,則使用Session標識符0作為參數(shù),通知服務進程,執(zhí)行步驟六;
服務進程接收到用戶進程發(fā)送的Session標識符0后,服務進程結(jié)束Session標識符0對應的用戶進程,執(zhí)行步驟一;
如果該變更后的Session狀態(tài)不為解鎖,則判斷該變更后的Session狀態(tài)是否為斷開,如果為斷開,則結(jié)束當前用戶進程,執(zhí)行步驟一,如果不為斷開,執(zhí)行步驟六。本發(fā)明的有益效果是與現(xiàn)有技術(shù)相比,通過服務進程監(jiān)視Session列表變更、用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更、用戶進程在當前Session最前端顯示報警通知的方式,解決了當操作狀態(tài)變更時所導致的報警通知窗口無法顯示的問題。本發(fā)明的報警通知方法,能夠在登錄、鎖定、注銷等操作狀態(tài)下實現(xiàn)最前端顯示報警通知,解決了傳統(tǒng)報警通知方法存在的在特定狀態(tài)下無法顯示報警通知或報警通知窗口被其他窗體遮擋的問題,使用戶能及時了解報警通知信息,防止重要信息丟失,從而避免了由于重要信息丟失所造成的重大損失。
圖I是本發(fā)明的報警通知方法的流程圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法作進一步詳細描述。在Windows操作系統(tǒng)中操作狀態(tài)的切換,是通過由不同Session切換來完成的,當發(fā)生登錄、鎖定、注銷等操作狀態(tài)的變更時,相應的Session狀態(tài)也隨之變更。操作系統(tǒng)顯示一個窗口前,需要先創(chuàng)建一個Session,以確定對應的顯示區(qū)域;然后再創(chuàng)建該Session對應的用戶進程。通常情況下一個Session對應多個用戶進程,一個用戶進程可以同時打開多個窗口。在Windows操作系統(tǒng)中,系統(tǒng)只顯示Session 狀態(tài)為激活的Session對應的用戶進程的窗口。Session標識符通常由0,1,2等數(shù)字構(gòu)成;
本發(fā)明的報警通知方法,設(shè)定一個Session只對應一個用戶進程,一個用戶進程只顯示一個報警通知窗口,解決了最前端報警通知窗口的唯一性問題;并通過服務進程監(jiān)視Session列表變更、用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更,用戶進程將報警通知所在窗口的層疊屬性設(shè)置為最前端顯示的方式,實現(xiàn)了任意狀態(tài)下最前端顯示報警通知;
本發(fā)明的報警通知方法的有關(guān)概念說明如下
Session :系統(tǒng)中相互隔離的顯示區(qū)域,一個Session只對應一個用戶進程;
服務進程系統(tǒng)啟動后就啟動的一個后臺監(jiān)視的進程;
用戶進程負責監(jiān)視其對應的Session的Session狀態(tài)變更,用戶進程包含一個報警通知窗口。
實施例例如,本發(fā)明的報警通知方法應用環(huán)境為普通局域網(wǎng),當網(wǎng)絡(luò)中的終端計算機被病毒入侵時,本發(fā)明的最前端顯示的報警通知方法會在服務器上把病毒入侵報警通知窗口顯示在Windows操作系統(tǒng)的最前端。本發(fā)明的在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,報警通知系統(tǒng)包括服務器、顯示器、鍵盤、鼠標,操作系統(tǒng)為Windows操作系統(tǒng)。本實施例當前存在三個Session :SessionO、Sessionl、Session2,三個 Session 的狀態(tài)和Session標識符如下
SessionO (激活,Session標識符0),對應用戶進程0 ;
Sessionl (斷開,Session標識符I), Session狀態(tài)為斷開,沒有對應的用戶進程;Session2 (斷開,Session標識符2),Session狀態(tài)為斷開,沒有對應的用戶進程;如圖I所示,本發(fā)明的在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,具體工作步驟如下
步驟101服務進程監(jiān)視Session列表變更
Session 列表由三個 Session 組成,即 Session。、Sessionl 和 Session2 ;
所述Session包括Session狀態(tài)和Session標識符;所述Session狀態(tài)包括激活、鎖定、解鎖、斷開;
服務進程利用Windows操作系統(tǒng)提供的API接口監(jiān)視Session列表變更,本實施例Session列表發(fā)生變更,即新建了一個Session3,服務進程會收到Session列表變更通知,執(zhí)行步驟102 ;(如果未收到Session列表變更通知,執(zhí)行步驟101,服務進程繼續(xù)監(jiān)視Session列表變更;)
步驟102服務進程分析Session列表變更通知
服務進程利用Windows操作系統(tǒng)提 供的API接口獲取Session列表,此時,所述Session 列表由四個 Session 組成,即 Session。、SessionK Session2 和 Session3 ;
此時,四個Session的Session狀態(tài)和Session標識符如下
SessionO (激活,Session標識符0),對應用戶進程0 ;
Sessionl (斷開,Session標識符I), Sessionl狀態(tài)為斷開,沒有對應的用戶進程; Session2 (斷開,Session標識符2),Session2狀態(tài)為斷開,沒有對應的用戶進程; Session3 (激活,Session標識符3),對應用戶進程3 ;
服務進程檢查Session列表中的每個Session,選取Session狀態(tài)為激活的SessionO和Session3,將SessionO對應的Session標識符0保存在服務進程內(nèi)存中;將Session3對應的Session標識符3保存在服務進程內(nèi)存中;
步驟103服務進程為每個Session狀態(tài)為激活的Session分別啟動新用戶進程
此時Session3和SessionO的Session狀態(tài)均為激活,因此服務進程啟動新用戶進程3和用戶進程4;
服務進程使用保存在服務進程內(nèi)存中的Session標識符3作為參數(shù),啟動新用戶進程
3;
服務進程使用保存在服務進程內(nèi)存中的Session標識符0作為參數(shù),啟動新用戶進程
4;
服務進程刪除保存在服務進程內(nèi)存中的所有Session標識符,即刪除服務進程內(nèi)存中的Session標識符0、Session標識符3 (因Sessionl和Session2的Session狀態(tài)均為斷開,因此Session標識符I和Session標識符2之前沒有被保存在服務進程內(nèi)存中);
步驟104設(shè)定一個Session只對應一個用戶進程
每個Session在創(chuàng)建時,其Session狀態(tài)都是從激活狀態(tài)開始的,因此每一個Session都會在其session狀態(tài)第一次為激活時,經(jīng)過步驟103由服務進程啟動新用戶進程,然后經(jīng)過步驟104對該Session狀態(tài)為激活的Session設(shè)定只對應一個用戶進程,本實施例中,SessionO和Session3此時的Session狀態(tài)均為激活,因此只對SessionO和Session3進行設(shè)定一個Session只對應一個用戶進程的操作;
用戶進程3和用戶進程4分別進行如下操作
用戶進程3操作如下
用戶進程3將其對應的Session3的Session標識符3保存在用戶進程內(nèi)存中,在用戶進程內(nèi)存中查找是否存在與該Session標識符3相同的Session標識符,本實施例不存在,即服務進程之前未啟動過該Session標識符3對應的用戶進程,執(zhí)行步驟105 ;
用戶進程4操作如下
用戶進程4將其對應的SessionO的Session標識符0保存在用戶進程內(nèi)存中,在用戶進程內(nèi)存中查找是否存在與該Session標識符0相同的Session標識符,本實施例存在,即服務進程之前已經(jīng)啟動過該Session標識符0對應的用戶進程0,用戶進程4將其存入用戶進程內(nèi)存中的Session標識符0從用戶進程內(nèi)存中刪除,結(jié)束用戶進程4,執(zhí)行步驟101 ;步驟105新建且其Session狀態(tài)為激活的Session對應的用戶進程在該Session最前端顯示病毒入侵報警通知
用戶進程3從服務進程讀取病毒入侵報警通知;
用戶進程3將病毒入侵報警通知所在窗口的層疊屬性設(shè)置為最前端顯示;
用戶進程3改變病毒入侵報警通知所在窗口的文字亮度、設(shè)置文字顏色為紅色,增大默認文字尺寸為50mm*50mm,以使病毒入侵報警通知顯示更明顯;
步驟106當前Session狀態(tài)為激活的Session對應的用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更
當前SessionO和Session3的Session狀態(tài)均為激活;
用戶進程0和用戶進程3分別進行如下操作
用戶進程0操作如下
用戶進程0利用Windows操作系統(tǒng)提供的API接口監(jiān)視其對應的SessionO的SessionO狀態(tài)變更;如果收到SessionO狀態(tài)變更通知,用戶進程0則將變更后的SessionO狀態(tài)保存在用戶進程內(nèi)存中,執(zhí)行步驟107 ;如果未收到SessionO狀態(tài)變更通知,執(zhí)行步驟106 ;
用戶進程3操作如下
用戶進程3利用Windows操作系統(tǒng)提供的API接口監(jiān)視其對應的Session3的Session3狀態(tài)變更;如果收到SeSSion3狀態(tài)變更通知,用戶進程3則將變更后的SeSSion3狀態(tài)保存在用戶進程內(nèi)存中,執(zhí)行步驟107 ;如果未收到Session〗狀態(tài)變更通知,執(zhí)行步驟106,即當前Session狀態(tài)為激活的Session對應的用戶進程繼續(xù)監(jiān)視其對應的Session的Session狀態(tài)變更;
本實施例發(fā)生SeSSion3狀態(tài)從激活變更為鎖定,此時,四個Session的Session狀態(tài)和Session標識符如下
SessionO (激活,Session 標識符 0);
Sessionl (斷開,Session 標識符 I);
Session2 (斷開,Session 標識符 2);
Session3 (鎖定,Session 標識符 3);
因此,用戶進程3會收到SeSSion3狀態(tài)變更通知,此時,用戶進程3操作如下
用戶進程3利用Windows操作系統(tǒng)提供的API接口監(jiān)視其對應的Session3的Session3 狀態(tài)變更;用戶進程3收到SeSSion3狀態(tài)變更通知,則將該變更后的SeSSion3狀態(tài)保存在用戶進程內(nèi)存中,執(zhí)行步驟107;
步驟107 Session狀態(tài)發(fā)生變更的Session對應的用戶進程分析已收到的Session狀態(tài)變更通知
本實施例發(fā)生Session〗狀態(tài)從激活變更為鎖定;
因此SeSSion3對應的用戶進程3判斷保存在用戶進程內(nèi)存中的變更后的SeSSion3狀態(tài)是否為鎖定本實施例該變更后的Session3狀態(tài)為鎖定,則使用Session標識符0為參數(shù),通知服務進程,執(zhí)行步驟106 ;服務進程接收到用戶進程3發(fā)送的Session標識符O后,服務進程將Session標識符O保存在服務進程內(nèi)存中,執(zhí)行步驟103,即為Session狀態(tài)為激活的SessionO啟動用戶進程(如果某個Session的Session狀態(tài)為鎖定,SessionO的SessionO狀態(tài)就必為激活);(如果用戶進程3判斷保存在用戶進程內(nèi)存中的該變更后的Session狀態(tài)不為鎖定,則判斷該變更后的Session3狀態(tài)是否為解鎖,如果為解鎖,判斷SessionO的SessionO狀態(tài)是否為激活,如果為激活,執(zhí)行步驟106,如果不為激活,則使用Session標識符O作為參數(shù),通知服務進程,執(zhí)行步驟106 ;
服務進程接收到用戶進程3發(fā)送的Session標識符O后,服務進程結(jié)束Session標識符O對應的用戶進程0,執(zhí)行步驟101 ;
如果變更后的Session3狀態(tài)不為解鎖,則判斷該變更后的Session3狀態(tài)是否為斷開,如果為斷開,則結(jié)束當前用戶進程3,執(zhí)行步驟101,如果不為斷開,執(zhí)行步驟106 ;) 上述報警通知方法;將計算機被病毒入侵的報警通知窗ロ顯示在Windows操作系統(tǒng)的最前端,解決了傳統(tǒng)報警通知方法存在的在特定狀態(tài)下報警通知窗ロ被其他窗體遮擋的問題,使用戶能及時了解報警通知信息,防止重要信息丟失,從而避免了由于重要信息丟失所造成的重大損失。
權(quán)利要求
1.ー種在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,其特征是,包括以下步驟 步驟一、服務進程監(jiān)視Session列表變更 Session 列表由若干個 Session 組成,即由 Session。, Sessionl…SessionN 組成; 所述Session包括Session狀態(tài)和Session標識符; 所述Session狀態(tài)包括激活、鎖定、解鎖、斷開; 所述Session標識符為Session標識符O, Session標識符I··· Session標識符N ; 服務進程利用Windows操作系統(tǒng)提供的API接ロ監(jiān)視Session列表變更如果收到Session列表變更通知,執(zhí)行步驟ニ ;如果未收到Session列表變更通知,執(zhí)行步驟ー;步驟ニ、服務進程分析Session列表變更通知 服務進程利用Windows操作系統(tǒng)提供的API接ロ獲取Session列表; 服務進程檢查Session列表中的姆個Session,選取Session狀態(tài)為激活的Session,并將Session狀態(tài)為激活的Session的Session標識符保存在服務進程內(nèi)存中; 步驟三、服務進程為每個Session狀態(tài)為激活的Session分別啟動新用戶進程 服務進程使用保存在服務進程內(nèi)存中的Session標識符作為參數(shù),為該Session標識符對應的Session啟動新用戶進程; 服務進程刪除保存在服務進程內(nèi)存中的所有Session標識符; 步驟四、設(shè)定ー個Session只對應ー個用戶進程 用戶進程將其對應的Session的Session標識符保存在用戶進程內(nèi)存中,在用戶進程內(nèi)存中查找是否存在與該Session標識符相同的Session標識符,如果存在,用戶進程將其存入用戶進程內(nèi)存中的其對應的Session的Session標識符從內(nèi)存中刪除,結(jié)束該用戶進程,執(zhí)行步驟ー;如果不存在,執(zhí)行步驟五; 步驟五、新建且其Session狀態(tài)為激活的Session對應的用戶進程在該Session最前端顯示報警通知 新建且其Session狀態(tài)為激活的Session對應的用戶進程從服務進程讀取報警通知; 該用戶進程將報警通知所在窗ロ的層疊屬性設(shè)置為最前端顯示; 該用戶進程通過改變報警通知所在窗ロ的屬性使報警通知更明顯; 步驟六、當前Session狀態(tài)為激活的Session對應的用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更 當前Session狀態(tài)為激活的Session對應的用戶進程利用Windows操作系統(tǒng)提供的API接ロ監(jiān)視其對應的Session的Session狀態(tài)變更如果收到Session狀態(tài)變更通知,則將該變更后的Session狀態(tài)保存在用戶進程內(nèi)存中,執(zhí)行步驟七;如果未收到Session狀態(tài)變更通知,執(zhí)行步驟六; 步驟七、Session狀態(tài)發(fā)生變更的Session對應的用戶進程分析已收到的Session狀態(tài)變更通知 Session狀態(tài)發(fā)生變更的Session對應的用戶進程判斷保存在用戶進程內(nèi)存中的該變更后的Session狀態(tài)是否為鎖定如果為鎖定,則使用Session標識符O為參數(shù),通知服務進程,執(zhí)行步驟六; 服務進程接收到該用戶進程發(fā)送的Session標識符O后,服務進程將Session標識符O保存在服務進程內(nèi)存中,執(zhí)行步驟三; 如果Session狀態(tài)發(fā)生變更的Session對應的用戶進程判斷保存在用戶進程內(nèi)存中的該變更后的Session狀態(tài)不為鎖定,則判斷該變更后的Session狀態(tài)是否為解鎖,如果為解鎖,判斷SessionO的Session狀態(tài)是否為激活,如果為激活,執(zhí)行步驟六,如果不為激活,則使用Session標識符0作為參數(shù),通知服務進程,執(zhí)行步驟六; 服務進程接收到用戶進程發(fā)送的Session標識符0后,服務進程結(jié)束Session標識符0對應的用戶進程,執(zhí)行步驟一; 如果該變更后的Session狀態(tài)不為解鎖,則判斷該變更后的Session狀態(tài)是否為斷開,如果為斷開,則結(jié)束當前用戶進程,執(zhí)行步驟一,如果不為斷開,執(zhí)行步驟六。
2.如權(quán)利要求I所述的報警通知方法,其特征是,步驟五中所述窗口的屬性為窗口的文字亮度、默認文字顏色及默認文字尺寸。
全文摘要
本發(fā)明公開了一種在Windows平臺任意狀態(tài)下最前端顯示的報警通知方法,包括服務進程監(jiān)視Session列表變更、服務進程分析Session列表變更通知、服務進程為每個Session狀態(tài)為激活的Session啟動新用戶進程、設(shè)定一個Session只對應一個用戶進程、用戶進程在其對應的Session最前端顯示報警通知、用戶進程監(jiān)視其對應的Session的Session狀態(tài)變更、用戶進程分析已收到的Session狀態(tài)變更通知,本發(fā)明的報警通知方法能夠在登錄、鎖定、注銷等操作狀態(tài)下實現(xiàn)最前端顯示報警通知,使用戶能及時了解報警通知消息,防止重要信息丟失。
文檔編號G06F11/30GK102681908SQ20121014878
公開日2012年9月19日 申請日期2012年5月15日 優(yōu)先權(quán)日2012年5月15日
發(fā)明者李凱, 潘琳琳, 金魁 申請人:沈陽通用軟件有限公司