一、功能介紹:
分為兩個軟件,一個為【主機】,一個為【遠程終端】。【遠程終端】通過鼠標鍵盤可以控制【主機】程序;【主機】將界面?zhèn)魉偷健具h程終端】顯示。
二、設計介紹:
① 【主機】端的界面位圖傳輸功能使用的是《Visual C++C6.0技術內幕第五版》源碼ex34a的Blocksock,這個TCP套接字類非常好用,因為帶了“超時取消”功能,建議在工程中多多使用這樣的類;
②?【主機】端的桌面位圖捕獲,見CopyBitmap、ToMemory兩個函數,分為實現(xiàn)了獲取桌面HBITMAP和將這個HBITMAP完整的按bitmap格式保存到內存中。ToMemory的第三個參數為像素顏色,可選擇32、24、16、8,自己試一試,會占用不同的內存容量,建議取8,這樣一幅800×600的位圖不壓縮時占用480K字節(jié)多;
③?【主機】端的位圖壓縮,采用了開源項目miniLZO,這個開源壓縮項目非常好用。經驗證,一般界面下的位圖,壓縮后壓縮比可以達到90%而且速度超快。這些比例數字都在程序中顯示;
④ 鼠標鍵盤控制信息采用了低級鉤子的方法獲取,注意,低級鉤子它們并不需要單獨寫DLL。這一部分參見http://blog.csdn.net/dijkstar/article/details/9007167(VC6捕獲鼠標事件(移動、單擊等)的一些總結(MFC消息、DriectInput、鉤子)),說明了為什么要使用低級鉤子來換?。?/p>
⑤ 鼠標鍵盤的控制信息傳輸采用了UDP,在Lan.cpp中實現(xiàn);
⑥ 為了提高程序的健壯性,使用毫秒級的多媒體測時函數,測量發(fā)送、接收花費的時間,做到心中有數;
⑦?【遠程終端】把收到的壓縮位圖,解壓后,使用函數GetHBmp得到HBIMAP,并使用一個位圖控件做顯示。
使用時,先將每個程序的IP地址設一下(每個程序有兩處IP需要設,IP指的是都是對方的IP地址),先運行【遠程終端】,再運行【主機】程序。