?? 217.htm
字號:
<p>遠程共享顯示及聲音的實現</p>
<p></p>
<p></p>
<p></p>
<p> 在局域網內共享調制解調器以及共享打印機都是我們非常熟悉的,而對于顯示器和聲卡的共享一般比較陌生。 </p>
<p></p>
<p> 當你在進行教學、演示或展示時,也許你希望主控電腦上的畫面同時也出現在其它電腦上;當你在跟蹤調試程序時,你也許夢想過兩臺顯示器能夠同步,以便觀看源代碼時不破壞運行程序畫面;還有,出于管理的目的,或許你需要遠程監控其它電腦的運行狀況,等等。上述所有情況都是遠程共享顯示的例子。 </p>
<p></p>
<p> 共享聲卡的需求也不少:首先這可以降低硬件投資,讓沒有裝或者沒法裝聲卡的電腦(如某些筆記本電腦)也有了“喉舌”;其次,即使每臺機器都有聲卡也不無用武之地:至少你的 mp3背景音樂與你的英語有聲軟件不再經常發生沖突了;還有,共享聲卡使得“遠程有聲通知”成為可能,其作用類似于立即型聲音郵件,在日常工作中有廣泛的應用。 </p>
<p></p>
<p> 共享顯示器或聲卡的硬件(一般在擴展槽內插一塊卡)在市場上不難找到。但擴充本文的示例程序即可以用軟件輕松實現這些功能。 </p>
<p></p>
<p> 一、共享顯示 </p>
<p></p>
<p> 我們通過一個完整的示例程序(VB 6.0)來說明。在例子中,被共享端(即服務器端)的任務是:自動捕獲本機的當前顯示畫面,并將之傳給共享端(即客戶端)。 </p>
<p></p>
<p> 1. 服務器端程序(frmServer.frm) </p>
<p></p>
<p> 這里有三點需要重點說明:一是自動捕獲畫面問題。為了模擬“捕獲屏幕鍵”被按下的動作,程序里使用了 API調用 keybd_event。雖然VB的SendKeys語句也有類似功能,但它不如 keybd_event穩定和可靠。二是畫面粘貼和壓縮存儲問題。為了能把已經被捕獲到系統剪貼板中的圖像粘貼下來并存儲到文件,程序里使用了 ImgEdit控件。該控件強大的功能遠非PictureBox控件或 Image控件可比。ImgEdit 不僅支持多種壓縮圖像格式(如 JPG、TIFF等),而且它對畫面進行操縱和編輯的功能也非常強大(如圖像旋轉、縮放、嵌入等)。ImgEdit 還能對剪貼板進行Copy、Cut、Paste等操作。使用 Ctrl+T 或菜單(工程->部件)來添加 Windows標準的 ImgEdit控件(參見圖一)。三是文件傳輸問題。用 ImgEdit存儲的壓縮文件一般只有 40 KB左右,使用 Winsock控件可以一次傳輸出去。但由于接收方的 Winsock控件一般是4K至8K調用一次 DataArrival子程,故程序使用主動分塊進行傳輸,接收方確認后再發下一塊。 </p>
<p></p>
<p></p>
<p></p>
<p>服務器端源程序如下: </p>
<p></p>
<p>注釋:====================== frmServer.frm </p>
<p></p>
<p>Option Explicit </p>
<p>Const FileName = "C:\sys1.tmp", BlockSize = 3072 注釋: 傳送包大小 </p>
<p>Private Declare Sub keybd_event Lib "user32" _ </p>
<p>(ByVal bVk As Byte, ByVal bScan As Byte, _ </p>
<p>ByVal dwFlags As Long, ByVal dwExtraInfo As Long) </p>
<p></p>
<p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -