一区二区三区av无码观看_亚洲av极品无码专区在线观看_亚洲一区二区三区乱码AⅤ_好深好爽使劲我还要_国产成人a高清视频

聊城共贏網絡,聊城網站建設
我們專注:聊城做網站,聊城建網站,聊城網站建設,網站制作,虛擬主機,域名注冊,網站推廣等。聯系電話:15066359825 點擊這里給我發消息
最新公告 行業資訊  
當前位置:首頁 --> 最新動態 --> 行業資訊
用VB實現局域網屏幕監視
發布時間:2012/9/25 8:15:04
一、引言 
局域網中,往往有定時監視同一組內機器的屏幕的需要。比如:在工業控制中,某車間有多條生產線,每條生產線有一臺或幾臺計算機實時監控該生產線的工序參數的波動;同時,需要有一臺計算機(可以稱之為屏幕監視服務器)來定時循環地顯示各監視器的屏幕,以達到及時發現異常情況的目的。再如學校等公共機房,為了提高機器的有效使用率,屏幕監視亦具有良好的效用。本文將介紹如何用VB來實現屏幕監視的功能。 

二、VB實現屏幕監視的原理 
本文把被監視的機器稱為客戶機,監視屏幕的機器稱為服務器(程序中服務器的名稱為Monitor)。首先在客戶機上把顯示器的屏幕作為一個窗口,并且把該窗口作為圖像加在VB工程中的窗體上,而后把該圖像在服務器上保存為圖像文件。在服務器上則在窗體中循環加載圖像文件,實現動態的、可選擇地顯示各個圖像。 

三、客戶機程序的編制與設置 
1、啟動VB,創建缺省工程,將窗體的Visible屬性改為False,并在窗體上添加一Timer控件,名稱為Timer1,其Interval屬性設為30000(采樣間隔為30秒)。 
2、API函數的聲明(可通過API Text Viewer加入) 
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long 
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 
Private Declare Function GetDesktopWindow Lib "user32" () As Long 
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long 
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
3、全局變量的聲明 
Dim ComputerName As String ’本機名稱,用來區分不同的機器所生成的圖像。 
4、再添加以下代碼 
Private Sub Form_Load() 
Dim sBuffer As String 
Dim lSize As Long 
sBuffer = Space$(255) 
lSize = Len(sBuffer) 
Call GetComputerName(sBuffer, lSize) 
ComputerName = Trim(Left$(sBuffer, lSize)) 
Call iniPara ’iniPara函數定義在后 
End Sub 
為了防止程序被終止,添加如下語句: 
Private Sub Form_Unload(Cancel As Integer) 
Shell "C:\Windows\System\Client.exe" ’調用本程序所生成的可執行文件 
End Sub 
Private Sub Timer1_Timer() 
Dim swnd, sdc, hd 
swnd = GetDesktopWindow() 
sdc = GetDC(swnd) 
hd = BitBlt(Me.hdc, 0, 0, Me.Width, Me.Height, sdc, 0, 0, &HCC0020) 
SavePicture Me.Image, "\\Monitor\D$\ClientScreen\image" & ComputerName & ".bmp" 
hd = ReleaseDC(swnd, sdc) 
Call iniPara 
End Sub 
當發現有異常情況時,往往需要縮短采樣間隔,下面iniPara函數可實現改變定時器的Interval屬性的功能。 
Private Function iniPara() ’讀取服務器上的Client.ini文件,初使化定時器的間隔。 
Dim sBuffer As String 
Dim lSize As Long 
Dim TimerInterval As Integer ’采樣間隔 
Open "\\Monitor\D$\ClientScreen\Client.ini" For Input As #1 
Line Input #1, sBuffer 
lSize = InStr(1, sBuffer, "=") 
Timer1.Interval = Val(Mid(sBuffer, lSize + 1)) 
Close (1) 
End Function 
編譯生成可執行文件Client.exe,將其放在文件夾C:\Windows\System下,并把該程序設為開機即啟動。 

四、服務器程序的編制與設置 
啟動VB,創建缺省工程,將窗體的WindowState屬性改為2-maximized,并在窗體上添加一Timer控件,名稱為Timer1,其Interval屬性設為6000(采樣間隔為6秒);在窗體上增添一Image控件,名稱為Image1,調整至合適尺寸,將其Stretch屬性改為True,添加如下代碼: 
Const iNumClient = 5 ’客戶機的數量 
Dim sClientName(1 To iNumClient) As String ’存放客戶機名稱的數組 
Dim i As Integer 
然后在Form_Load中把sClientName逐個賦值為客戶機的名稱,再添加如下代碼: 
Private Sub Timer1_Timer() 
i = i + 1 
If (i > iNumClient) Then i = 1 
Image1.Picture = LoadPicture("D:\ClientScreen\image" & sClientName(i) & " .bmp") 
End Sub 
編譯生成可執行文件Server.exe,將其放在文件夾D:\ClientScreen下,并在該文件夾下新建一文本文件Client.ini,里面記錄著客戶機的采樣間隔,格式為“任意字符串(不能包含等號)=時間(毫秒)”,比如: 
ClientInterval=60000 
即表示客戶機的采樣間隔為60秒。 
再把服務器的D盤共享為D$,訪問類型為“完全”。 
下面的工作就是待各客戶機運行一段時間后,在服務器就可以一覽眾客戶機的屏幕了。 

五、結束語 
該程序比較簡潔,使用方便,達到了“一機多顯示器”的效果。當然,本程序僅僅是梗概,還很不完善,功能也不多,在實際應用中可逐步完善。 
本程序是在VB6.0企業版下實現的。 
銷售部 點擊這里給我發消息
技術部
點擊這里給我發消息
售后服務 點擊這里給我發消息
公司電話(傳真) 15066359825
聊城建網站首頁   公司簡介   網站建設   虛擬主機   域名注冊   網站推廣   公司資訊   成功案例   服務中心   聯系我們  網站地圖
版權所有 2008-2009 共贏網絡 qiao024.com 公司地址:聊城市利民東路 郵編:252000
銷售熱線:15066359825 技術支持:QQ:297369059 銷售在線服務: QQ:914082597
網站建設公司專業從事:聊城做網站,聊城建網站,聊城網站建設,聊城網站制作,虛擬主機,域名注冊,網站推廣等服務
聊城共贏網絡  
分公司:臨清網站建設、陽谷網站建設、高唐網站建設、茌平網站建設、東阿網站建設、冠縣網站建設莘縣網站建設