天天看點

WinCE下的遠端控制

     以前在給别人介紹Windows CE的開發時,為了示範裝置上程式的運作情況,就用Remote Zoomin來截屏,裝置端一重新整理,Remote Zoomin就得去手動Refresh一下,在CE和PC兩邊忙得不亦樂乎。當時就想,要是有自動重新整理的功能不就省去了這麼多麻煩嗎。如果能在PC端直接控制CE裝置,豈不更好?

看了幫助檔案,原來WinCE是支援RDP的,添加相應的元件,編譯完成後,在裝置上測試發現CE真的可以登陸Windows XP,而且效果還不錯!但CE本身并不能做Server,隻能做Client。是以直接利用現成的元件是不可能了,隻能自己做一個這樣的小工具,以免以後又忙得不可開交。

初步分析了一下,為了實作這個功能,CE端需要做兩個事情,第一,實時截屏并發送給PC。第二,接收PC端發過來的指令(主要是滑鼠和鍵盤的消息指令)并模拟滑鼠和鍵盤事件。而PC端也隻要做對應的兩個事情,首先是接收CE端發來的螢幕内容的BUF并将其顯示,第二是捕獲滑鼠和鍵盤的消息并給CE發送過去。這幾件事情都比較容易實作。

先說CE端的截屏,主要工作就是将螢幕的裝置環境拷貝到對應的記憶體裝置環境裡去,再發送DIB裡的資料即可,PC調用函數StretchDIBits()顯示接收到的Color Data。這裡唯一需要注意的就是在截屏時并沒有截取滑鼠指針的資訊,是以在截屏之後得手動畫上滑鼠的指針。否則,PC端就不能顯示CE滑鼠的位置和動作了。

模拟滑鼠和鍵盤的事件在CE端是很容易的,用mouse_event()和keybd_event()這兩個函數就足夠了。而PC端捕獲滑鼠和鍵盤的消息則有兩種方法,方法一是在PreTranslateMessage中來做,方法二則是在各個消息處理函數中來做。這裡需要注意一下,鍵盤的消息必須在PreTranslateMessage中處理,否則捕獲不到。剛開始,我還在這裡迷惑了一陣。L

原理的東西就不多講了,其實跟Windows下的遠端控制類軟體的思路是一樣的。接下來就考慮一些細節的問題。譬如通信的方式,EVC中的遠端工具是可以通過ActiveSync來通信的,也可以用Ethernet。是以為了友善最好也能用這兩種方式。另外,如果在使用ActiveSync時,是否可以利用RAPI,直接把裝置端的程式拷貝到CE上,并讓其運作。這樣又省了手動拷貝的麻煩。

仔細琢磨了一陣,發現這些需求都可以實作。把各部分都實作完了以後聯調,基本達到了預期的效果。但在CE分辨率較大時感覺有點遲鈍。是以又想了優化的方法。基本上有以下三點,比較、分塊、壓縮。所謂比較,就是在CE截屏之後做一個備份,再次截屏時将其與備份進行比較,如果不一緻再發送,否則就不用發給PC做更新。分塊是可以和比較一起使用的,如果螢幕隻是局部更新,那可以隻發送更新的塊,而其他塊則不發送。壓縮理論上是可以提高傳輸效率的。粗略的比較了一下,一張640*480的16Bit的位圖是600K,而壓縮之後的JPG圖檔才幾十K,差别還是相當可觀的。這三種方法都能節省網絡帶寬,但也都會增加CPU的負擔,實際效果也不好說。因為這個小工具主要是在區域網路中使用,帶寬不是問題,是以,暫時就不做優化的工作吧。

後來有一次,有人問起CE下的觸摸屏校準在哪裡,CE同步的連接配接怎麼建立。為了確定他能準确操作,便利用這個遠端顯示工具和螢幕錄像專家錄了一個視訊,果然效果相當好。後來想想,還不如在這個小工具中內建錄屏的功能,這樣又免去了開螢幕錄像專家的麻煩。于是,找了一個很友善用的從BMP儲存為AVI的類,添加了錄屏功能。當然由于沒有壓縮,是以錄制的AVI檔案很大,一分鐘就幾十兆!

自從有了這個小工具,示範WindowsCE下的程式就很從容了,并且還能錄制WinCE下的操作步驟,省了很多口水。現在貼出來跟大家一起分享,也希望能解決你的麻煩。^_^

有關RMC工具的幾點說明:

1.              由于它支援USB ActiveSync的連接配接方式,并能夠自動拷貝檔案到裝置上運作,是以在沒有LCD的情況下,你可以用你的電腦顯示器作為裝置的LCD顯示。(這兩天調試支援多分辨率的Eboot就用到這個功能,效果還是相當好的)。

2.              在使用同步連接配接,并且希望能自動拷貝裝置端程式時,請不要修改裝置端程式RMCEC.exe的檔案名,并将其和RMCPC.exe放在同一個目錄下面。

其實,後來在網上也找到了幾個功能類似的軟體。其中一個是Windows Mobile power toys,用了一下,感覺好像比RMC快一點,但它不支援Ethernet的連接配接,隻能用USB同步,而且還要手動拷貝檔案到裝置上去。另外一個是SOTI公司出的軟體,看起來相當專業,曾經嘗試着破解了5.0的試用版,不知道是破解壞了,還是破解得不徹底,用一會兒自己就關了。還是用自己的RMC吧,簡單又友善。^_^

WinCE遠端控制小工具的下載下傳位址: http://files.cnblogs.com/we-hjb/CERHOST.rar

下一篇: 字典樹01