亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VB中遠程共享顯示及聲音的實現

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

->->服務器端源程序如下:->->'======================frmServer.frm->->OptionExplicit->->ConstFileName="C:/sys1.tmp",BlockSize=3072'傳送包大小->->PrivateDeclareSubkeybd_eventLib"user32"_->->(ByValbVkAsByte,ByValbScanAsByte,_->->ByValdwFlagsAsLong,ByValdwExtraInfoAsLong)->->->->PrivateSubForm_Load()->->tcpServer.LocalPort=1001'設置監聽端口號->->tcpServer.Listen'開始監聽->->EndSub->->->->PrivateSubtcpServer_ConnectionRequest(ByValrequestIDAsLong)->->IftcpServer.State<>sckClosedThentcpServer.Close->->tcpServer.AcceptrequestID->->tcpServer.SendData"SH"'成功連接后,發送“握手”信息->->EndSub->->->->PrivateSubtcpServer_DataArrival(ByValbytesTotalAsLong)->->StaticFileIDAsInteger,Cur_PosAsLong,FileLenAsLong->->DimstrDataAsString,j->->DimBuf()AsByte'定義一個可變大小的數組,用于傳送二進制圖像包->->tcpServer.GetDatastrData->->SelectCasestrData->->Case"Close"'接到“Disconnect”命令后,關閉當前連接,并繼續監聽->->tcpServer.Close->->ImgEdit1.ClearDisplay->->tcpServer.LocalPort=1001->->tcpServer.Listen->->Case"SavePicture"->->Callkeybd_event(vbKeySnapshot,1,0,0)'模擬按鍵操作->->j=DoEvents()->->IfDir$(FileName)<>""ThenKillFileName->->IfImgEdit1.IsClipboardDataAvailableThen'當剪貼板上有數據時->->ImgEdit1.ClearDisplay->->ImgEdit1.DisplayBlankImageScreen.Width/_->->Screen.TwipsPerPixelX,Screen.Height/_->->Screen.TwipsPerPixelY,,,6->->ImgEdit1.ClipboardPaste'從剪貼板粘貼圖像->->ImgEdit1.BurnInAnnotations0,2->->ImgEdit1.SaveAsFileName,1,6,6,256'另存圖像。參數說明如下:->->'“FileName”:文件名->->'參數“1”:TIFF型文件;->->'第一個“6”:RGB24類型;->->'第二個“6”:JPEG壓縮類型->->'參數“256”:最大壓縮比->->Clipboard.Clear->->tcpServer.SendData"PS"'發送“圖像文件就緒”信息->->EndIf->->Case"GetPicture"->->IfDir$(FileName)<>""Then->->FileID=FreeFile->->OpenFileNameForBinaryAs#FileID'打開文件并發送第一塊數據->->FileLen=LOF(FileID)->->ReDimBuf(1ToBlockSize)AsByte->->Get#FileID,,Buf->->tcpServer.SendDataBuf->->Cur_Pos=BlockSize->->EndIf->->Case"NextBlock"->->IfCur_Pos=FileLenThen->->tcpServer.SendData"EF"'文件傳送完畢后,發送“完成”信息->->CloseFileID->->ExitSub->->EndIf->->j=Cur_Pos BlockSize->->Ifj>FileLenThen->->j=FileLen-Cur_Pos->->Else->->j=BlockSize->->EndIf->->ReDimBuf(1Toj)AsByte'動態確定數組大小->->Get#FileID,,Buf->->tcpServer.SendDataBuf'發送后續包->->Cur_Pos=Cur_Pos j->->EndSelect->->EndSub->->->->2.客戶端程序(frmClient.frm)->->在窗體上建六個控件:一個名為tcpClient的Winsock控件用于通訊;一個名為txtIP的TextBox控件用于填寫服務器的IP地址;一個名為ImgEdit1的ImgEdit控件用于顯示服務器傳來的圖像;三個CommandButton控件(cmdConnect、cmdGet_Pic和cmdDisconnect)分別用于執行連接、取回圖像和斷開連接(見圖二)。->->

->->客戶端源代碼如下:->->'======================frmClient.frm->->OptionExplicit->->ConstFileName="C:/sys1.tmp"->->PrivateSubcmdConnect_Click()->->IftcpClient.State<>sckClosedThentcpClient.Close->->tcpClient.RemoteHost=txtIP.Text->->tcpClient.RemotePort=1001->->tcpClient.Connect'進行連接->->EndSub->->->->PrivateSubcmdDisconnect_Click()->->tcpClient.SendData"Close"'斷開連接->->cmdConnect.Enabled=True->->cmdGet_Pic.Enabled=False->->cmdDisconnect.Enabled=False->->EndSub->->->->PrivateSubcmdGet_Pic_Click()->->tcpClient.SendData"SavePicture"'請求圖像返回->->frmClient.MousePointer=11->->EndSub->->->->PrivateSubForm_Resize()'使ImgEdit1的大小隨窗體的變化而變化->->ImgEdit1.Height=frmClient.Height-825->->ImgEdit1.Width=frmClient.Width-225->->EndSub->->->->PrivateSubtcpClient_DataArrival(ByValbytesTotalAsLong)->->StaticFileIDAsInteger,FileLenAsLong->->DimBuf()AsByte->->DimjAsInteger->->ReDimBuf(bytesTotal)AsByte'根據到達數據的字節數確定接收數組的大小->->tcpClient.GetDataBuf->->'收到連接完成的“握手”信息->->IfbytesTotal=2AndChr(Buf(0))="S"AndChr(Buf(1))="H"Then->->cmdConnect.Enabled=False->->cmdGet_Pic.Enabled=True->->cmdDisconnect.Enabled=True->->ExitSub->->EndIf->->'收到圖像就緒的信息->->IfbytesTotal=2AndChr(Buf(0))="P"AndChr(Buf(1))="S"Then->->IfDir$(FileName)<>""ThenKillFileName->->FileID=FreeFile->->OpenFileNameForBinaryAs#FileID'打開文件,準備存儲圖像->->FileLen=0->->tcpClient.SendData"GetPicture"->->ExitSub->->EndIf->->'收到圖像發送完畢的信息->->IfbytesTotal=2AndChr(Buf(0))="E"AndChr(Buf(1))="F"Then->->Close#FileID'關閉文件->->j=DoEvents()->->ImgEdit1.Image=FileName->->ImgEdit1.Display'顯示收到的圖像->->ImgEdit1.BurnInAnnotations0,2->->frmClient.MousePointer=0->->ExitSub->->EndIf->->'收到一塊二進制圖像信息->->Put#FileID,,Buf'將當前數據塊存盤->->tcpClient.SendData"NextBlock"'申請下一塊->->FileLen=FileLen bytesTotal->->frmClient.Caption="TCPClient" Trim(Str(FileLen)) _->->"BytesReceived."'顯示當前收到的字節數->->EndSub->->->->客戶端成功共享服務器端顯示畫面后的外觀如圖三所示。->->

->->->->二、共享聲音->->共享聲音與共享顯示的思想是一致的,只是這時是客戶端向服務器端發送聲音文件,以便共享服務器的聲卡。服務器端應使用微軟的多媒體控件(MMControl)進行聲音播放(使用Ctrl T或菜單“工程->部件”來添加)。用該控件播放聲音不僅是簡單的,而且功能強大。->->由于關鍵模塊與共享顯示一致,故此處略去源代碼。->->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品中文字幕在线2019| 亚洲精品电影网在线观看| 国产成人精品在线播放| 91精品久久久久久久久不口人| 亚洲黄色在线看| 亚洲free性xxxx护士hd| 庆余年2免费日韩剧观看大牛| 精品国产91久久久久久| 91久久精品国产91久久性色| 中文国产成人精品| 欧美激情精品久久久久久久变态| 久久亚洲国产精品| 美女福利精品视频| 日韩av在线网址| 亚洲第一中文字幕| 亚洲国产私拍精品国模在线观看| 97视频在线播放| 亚洲欧美制服丝袜| 韩日欧美一区二区| 亚洲精品456在线播放狼人| 国产丝袜高跟一区| 成人免费观看49www在线观看| 欧美激情精品久久久久久久变态| 国产精品男人的天堂| 中文字幕最新精品| 色综合视频网站| 亚洲国产欧美久久| 精品国偷自产在线视频99| 日韩在线视频线视频免费网站| 亚洲国模精品一区| 国语自产精品视频在线看一大j8| 国产精品色午夜在线观看| 久久精品青青大伊人av| 国产69久久精品成人看| 日韩va亚洲va欧洲va国产| 亚洲视频网站在线观看| 久久精品99国产精品酒店日本| 欧美精品在线网站| 久久99久久99精品中文字幕| www.日韩系列| 亚洲女人天堂成人av在线| 亚洲在线视频福利| 亚洲成人网在线观看| 亚洲午夜精品久久久久久久久久久久| 国产成人高潮免费观看精品| 久久亚洲一区二区三区四区五区高| 久热精品视频在线观看一区| 亚洲男人的天堂在线播放| 亚洲视频在线观看视频| 国产成人黄色av| 欧洲亚洲女同hd| 国产精品久久久久影院日本| 精品欧美激情精品一区| 精品久久久久久久久久国产| 欧美黄网免费在线观看| 欧美视频免费在线| 97精品视频在线| 在线日韩中文字幕| 亚洲美女激情视频| 中文字幕欧美日韩在线| 97久久精品人人澡人人爽缅北| 2021久久精品国产99国产精品| 国产成人免费av电影| 亚洲新声在线观看| 亚洲视频在线观看免费| 国产精品久久二区| 亚洲精品久久久久久久久久久久| 精品综合久久久久久97| 国产91精品久久久久久| 日韩成人在线电影网| zzijzzij亚洲日本成熟少妇| 欧美另类在线播放| 理论片在线不卡免费观看| 在线看日韩欧美| 2019中文字幕全在线观看| 奇门遁甲1982国语版免费观看高清| 国产91网红主播在线观看| 国产精品成熟老女人| 国内精品久久久久久影视8| 福利二区91精品bt7086| 亚洲精品国产精品乱码不99按摩| 91精品免费久久久久久久久| 91精品国产91久久久久久最新| 国产欧美精品在线播放| 国产a∨精品一区二区三区不卡| 久久视频在线播放| 亚洲国产成人一区| 久久精视频免费在线久久完整在线看| 精品久久久久久中文字幕| 国产精品久久久一区| 国产成人精品电影| 亚洲社区在线观看| 亚洲国语精品自产拍在线观看| 亚洲精品www久久久久久广东| 91精品国产自产在线老师啪| 亚洲欧美日韩精品久久奇米色影视| 欧美丝袜一区二区| 亚洲精品美女网站| 国内久久久精品| 亚洲成年人影院在线| 国产精品久久一区主播| 亚洲色图综合网| 91欧美激情另类亚洲| 日本精品久久久久影院| 欧美综合国产精品久久丁香| 日韩电影大全免费观看2023年上| 久久综合久中文字幕青草| 久久人人97超碰精品888| 亚洲欧美成人在线| 亚洲国产欧美精品| 欧美激情一区二区三级高清视频| 成人亚洲激情网| 亚洲欧美制服中文字幕| 日韩欧美国产激情| 欧美大尺度激情区在线播放| 欧美性在线视频| 久久久成人精品| 亚洲男人av在线| 日韩精品一区二区三区第95| 午夜免费在线观看精品视频| 亚洲2020天天堂在线观看| 国产精品久久久久久av福利软件| 欧美大尺度在线观看| 2019最新中文字幕| 欧美在线激情网| 国产99视频精品免视看7| 日韩av在线不卡| 亚洲淫片在线视频| 97久久精品人人澡人人爽缅北| 欧美日韩福利电影| 亚洲最大福利网站| 亚洲福利视频免费观看| 国产日韩欧美夫妻视频在线观看| 精品偷拍一区二区三区在线看| 久久精品国产2020观看福利| 国产欧美日韩最新| 超碰精品一区二区三区乱码| 一区二区中文字幕| 亚洲人免费视频| 精品偷拍各种wc美女嘘嘘| 成人免费看黄网站| 亚洲福利视频免费观看| 欧美视频在线免费看| 亚洲美女免费精品视频在线观看| 国产精品入口日韩视频大尺度| 日韩高清中文字幕| 国产精自产拍久久久久久蜜| 久久久久www| 国内精久久久久久久久久人| 91精品国产综合久久香蕉922| 国产精品99久久久久久久久| 亚洲精品国产精品乱码不99按摩| 久久久久久国产精品久久| 日韩精品久久久久| 亚洲国产精品视频在线观看| 九九综合九九综合| 欧美精品免费在线| 日韩国产高清视频在线| 亚洲第一黄色网| 欧美性猛交xxxx乱大交3| 国产精品亚洲片夜色在线| 亚洲va欧美va国产综合久久| 久久精品国产亚洲一区二区| 成人欧美一区二区三区在线|