天天看點

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

QQ的遠端協助、或者說桌面共享是一個非常實用的功能,是以2.4版本的GG複制了它,而且,GG增強了桌面共享的功能,它可以允許指定要共享桌面的區域,這樣,對方就隻能看到指定區域的桌面,這對節省流量會非常有幫助。

  QQ的遠端協助、或者說桌面共享是一個非常實用的功能,是以,2.4版本的GG複制了它,而且,GG增強了桌面共享的功能,它可以允許指定要共享桌面的區域,這樣,對方就隻能看到指定區域的桌面,這對節省流量會非常有幫助。

  GG實作這些功能的過程并不是那麼簡單,因為内部業務邏輯的關聯容易把人搞暈。從運作起來的程式來說,遠端協助的場景很容易了解:一方是請求方,一方是協助方,邊界非常清晰。但是在程式中,無論是哪一方,其對應的窗體都是ChatForm,是以,在編碼時,你經常需要切換你的思維:一會要站在請求方的角度來考慮、一會又要站在協助方的角度來考慮,并且要把雙方的互動流程控制好。經過一段時間的努力,這些問題終于解決了,最終的代碼的結構也是相當清晰的,而且,重要的代碼部分我都添加了注釋。

一.GG V2.4 新增功能展現

  相比于2.0版本,除了極少部分的重構外,主要就是增加了遠端協助/桌面共享的功能。其使用流程與QQ類似:

(1)對話雙方的任何一方都可以發出邀請對方協助的請求。

(2)協助方收到請求後,可以選擇接受或拒絕。

(3)在正式協助的過程中,任何一方都可以終止遠端協助。

(4)任何一方掉線,遠端協助也将終止。

    廢話不多說,還是先上圖。

    發出遠端協助請求:

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

  協助方接收到請求:

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

  協助方接受請求後,開始遠端協助:

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

  協助過程中,請求方的界面:

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

  如果,我指定了QQ影音播放器的區域作為共享區域,則對方看到我的桌面如下:

可在廣域網部署運作的QQ高仿版 -- GG叽叽V2.4,增加遠端協助、桌面共享功能(源碼)

 

二.實作思路

雖然提供了源代碼,但是,我還是想将主要的思路列一下,這樣,大家了解起源碼來,會節省更多的時間。

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]。 

如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵 

下一篇: ceph 塊裝置

繼續閱讀