VC下遠端控制(桌面)的完整實現
原始碼位置在:http://download.csdn.net/detail/dijkstar/5564789,http://www.pudn.com/downloads552/sourcecode/windows/network/detail2276709.html
一、功能介紹:
分為兩個軟體,一個為【主機】,一個為【遠端終端】。【遠端終端】通過滑鼠鍵盤可以控制【主機】程式;【主機】將介面傳送到【遠端終端】顯示。
二、設計介紹:
① 【主機】端的介面點陣圖傳輸功能使用的是《Visual C++C6.0技術內幕第五版》原始碼ex34a的Blocksock,這個TCP套接字類非常好用,因為帶了“超時取消”功能,建議在工程中多多使用這樣的類;
② 【主機】端的桌面點陣圖捕獲,見CopyBitmap、ToMemory兩個函式,分為實現了獲取桌面HBITMAP和將這個HBITMAP完整的按bitmap格式儲存到記憶體中。ToMemory的第三個引數為畫素顏色,可選擇32、24、16、8,自己試一試,會佔用不同的記憶體容量,建議取8,這樣一幅800×600的點陣圖不壓縮時佔用480K位元組多;
③ 【主機】端的點陣圖壓縮,採用了開源專案miniLZO,這個開源壓縮專案非常好用。經驗證,一般介面下的點陣圖,壓縮後壓縮比可以達到90%而且速度超快。這些比例數字都在程式中顯示;
④ 滑鼠鍵盤控制資訊採用了低階鉤子的方法獲取,注意,低階鉤子它們並不需要單獨寫DLL。這一部分參見http://blog.csdn.net/dijkstar/article/details/9007167(VC6捕獲滑鼠事件(移動、單擊等)的一些總結(MFC訊息、DriectInput、鉤子)),說明了為什麼要使用低階鉤子來換取;
⑤ 滑鼠鍵盤的控制資訊傳輸採用了UDP,在Lan.cpp中實現;
⑥ 為了提高程式的健壯性,使用毫秒級的多媒體測時函式,測量傳送、接收花費的時間,做到心中有數;
⑦ 【遠端終端】把收到的壓縮點陣圖,解壓後,使用函式GetHBmp得到HBIMAP,並使用一個位圖控制元件做顯示。
使用時,先將每個程式的IP地址設一下(每個程式有兩處IP需要設,IP指的是都是對方的IP地址),先執行【遠端終端】,再執行【主機】程式。