QQ的遠端協助、或者說桌面共享是一個非常實用的功能,是以2.4版本的GG複制了它,而且,GG增強了桌面共享的功能,它可以允許指定要共享桌面的區域,這樣,對方就隻能看到指定區域的桌面,這對節省流量會非常有幫助。
QQ的遠端協助、或者說桌面共享是一個非常實用的功能,是以,2.4版本的GG複制了它,而且,GG增強了桌面共享的功能,它可以允許指定要共享桌面的區域,這樣,對方就隻能看到指定區域的桌面,這對節省流量會非常有幫助。
GG實作這些功能的過程并不是那麼簡單,因為内部業務邏輯的關聯容易把人搞暈。從運作起來的程式來說,遠端協助的場景很容易了解:一方是請求方,一方是協助方,邊界非常清晰。但是在程式中,無論是哪一方,其對應的窗體都是ChatForm,是以,在編碼時,你經常需要切換你的思維:一會要站在請求方的角度來考慮、一會又要站在協助方的角度來考慮,并且要把雙方的互動流程控制好。經過一段時間的努力,這些問題終于解決了,最終的代碼的結構也是相當清晰的,而且,重要的代碼部分我都添加了注釋。
一.GG V2.4 新增功能展現
相比于2.0版本,除了極少部分的重構外,主要就是增加了遠端協助/桌面共享的功能。其使用流程與QQ類似:
(1)對話雙方的任何一方都可以發出邀請對方協助的請求。
(2)協助方收到請求後,可以選擇接受或拒絕。
(3)在正式協助的過程中,任何一方都可以終止遠端協助。
(4)任何一方掉線,遠端協助也将終止。
廢話不多說,還是先上圖。
發出遠端協助請求:
協助方接收到請求:
協助方接受請求後,開始遠端協助:
協助過程中,請求方的界面:
如果,我指定了QQ影音播放器的區域作為共享區域,則對方看到我的桌面如下:
二.實作思路
雖然提供了源代碼,但是,我還是想将主要的思路列一下,這樣,大家了解起源碼來,會節省更多的時間。
1. UI方面,增加了一個Form,兩個控件。
(1)RemoteHelpForm:遠端桌面的Form,該Form顯示了遠端的桌面内容,并可通過在Form的表面操作來控制遠端桌面。
(2)RemoteHelpHandlePanel:該控件用于請求方,在送出請求後,或協助開始後,請求方可以通過來控件來取消請求或終止協助。
(3)RemoteHelpRequestPanel:該控件用于協助方,當協助方接收到協助請求後,通過該控件來回應是否接受請求。
2.内部邏輯關聯(完整流程展現)
(1)請求方:點選請求協助按鈕時,将向協助方發送InformationTypes.RemoteHelpRequest類型的消息,并顯示RemoteHelpHandlePanel控件。
(2)協助方:接收到(1)的消息後,顯示RemoteHelpRequestPanel控件,如果點選“拒絕”按鈕,則發送InformationTypes.RejectRemoteHelp消息給請求方;否則進入(3)
(3)協助方:發送InformationTypes.AgreeRemoteHelp消息給請求方,并打開RemoteHelpForm,連接配接對方的桌面。
(4)請求方:收到InformationTypes.AgreeRemoteHelp消息後,RemoteHelpHandlePanel控件開始計時。
(5)協助過程中,如果請求方點選RemoteHelpHandlePanel上的按鈕終止遠端協助,則發送InformationTypes.TerminateRemoteHelp消息給協助方,協助方将提示消息,并自動關閉RemoteHelpForm。
(6)協助過程中,如果協助方主動叉掉RemoteHelpForm,則會發送InformationTypes.CloseRemoteHelp消息給請求方,請求方将提示資訊,并關閉RemoteHelpHandlePanel。
3.遠端桌面的核心使用的是OMCS提供的DesktopConnector元件,RemoteHelpForm使用了它。
4.通過IMultimediaManager的DesktopRegion屬性來指定要共享的螢幕區域。
5. 通過代碼可以控制協助方是否可以操作桌面,還是隻能觀看,在RemoteHelpForm的構造函數中設定:
this.desktopConnector1.WatchingOnly = true;
6.遠端桌面的清晰度可以通過代碼進行控制,在MainForm的Initialize方法中:
this.multimediaManager.DesktopEncodeQuality = 3;//桌面的編碼品質。取值0~31。取值越小,越清晰。
三.GG V2.4 源碼下載下傳
下載下傳最新版本,請轉到這裡。
注意:如果要将GG部署到廣域網,則可以在服務端的配置檔案中設定監聽的端口;而在用戶端的配置檔案中,則可以指定伺服器的IP和Port。
關于GG的最新全貌介紹,我單獨寫了一篇文章,作為彙總,可參見 可在廣域網部署運作的QQ高仿版 -- GG2013概要。
歡迎和我探讨關于GG2013的一切,我的QQ:2027224508,多多交流!
大家有什麼問題和建議,可以留言,也可以發送email到我郵箱:[email protected]。
如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵