VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視介紹
局域網(wǎng)中,往往有定時監(jiān)視同一組內(nèi)機器的屏幕的需要。下面由學習啦小編給你做出詳細的VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視介紹!希望對你有幫助!
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視介紹:
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視一、
引言
在工業(yè)控制中,某車間有多條生產(chǎn)線,每條生產(chǎn)線有一臺或幾臺計算機實時監(jiān)控該生產(chǎn)線的工序參數(shù)的波動;同時,需要有一臺計算機(可以稱之為屏幕監(jiān)視)來定時循環(huán)地顯示各監(jiān)視器的屏幕,以達到及時發(fā)現(xiàn)異常情況的目的。再如學校等公共機房,為了提高機器的有效使用率,屏幕監(jiān)視亦具有良好的效用。本文將介紹如何用VB來實現(xiàn)屏幕監(jiān)視的功能。
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視二、
VB實現(xiàn)屏幕監(jiān)視的原理
本文把被監(jiān)視的機器稱為客戶機,監(jiān)視屏幕的機器稱為服務器(程序中服務器的名稱為Monitor)。首先在客戶機上把顯示器的屏幕作為一個窗口,并且把該窗口作為圖像加在VB工程中的窗體上,而后把該圖像在服務器上保存為圖像文件。在服務器上則在窗體中循環(huán)加載圖像文件,實現(xiàn)動態(tài)的、可選擇地顯示各個圖像。
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視三、
客戶機程序的編制與設置
1、啟動VB,創(chuàng)建缺省工程
將窗體的Visible屬性改為False,并在窗體上添加一Timer控件,名稱為Timer1,其Interval屬性設為30000(采樣間隔為30秒)。
2、API函數(shù)的聲明(可通過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 '本機名稱,用來區(qū)分不同的機器所生成的圖像。
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函數(shù)定義在后
End Sub
為了防止程序被終止,添加如下語句:
Private Sub Form_Unload(Cancel As Integer)
Shell "C:\System\Client.exe" '調(diào)用本程序所生成的可執(zhí)行文件
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, "" & ComputerName & ".bmp"
hd = ReleaseDC(swnd, sdc)
Call iniPara
End Sub
當發(fā)現(xiàn)有異常情況時,往往需要縮短采樣間隔,下面iniPara函數(shù)可實現(xiàn)改變定時器的Interval屬性的功能。
Private Function iniPara() '讀取服務器上的Client.ini文件,初使化定時器的間隔。
Dim sBuffer As String
Dim lSize As Long
Dim TimerInterval As Integer '采樣間隔
Open "" For Input As #1
Line Input #1, sBuffer
lSize = InStr(1, sBuffer, "=")
Timer1.Interval = Val(Mid(sBuffer, lSize + 1))
Close (1)
End Function
編譯生成可執(zhí)行文件Client.exe,將其放在文件夾C:\Windows\System下,并把該程序設為開機即啟動。
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視四、
服務器程序的編制與設置
啟動VB,創(chuàng)建缺省工程,將窗體的WindowState屬性改為2-maximized,并在窗體上添加一Timer控件,名稱為Timer1,其Interval屬性設為6000(采樣間隔為6秒);在窗體上增添一Image控件,名稱為Image1,調(diào)整至合適尺寸,將其Stretch屬性改為True,添加如下代碼:
Const iNumClient = 5 '客戶機的數(shù)量
Dim sClientName(1 To iNumClient) As String '存放客戶機名稱的數(shù)組
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
編譯生成可執(zhí)行文件Server.exe,將其放在文件夾D:\ClientScreen下,并在該文件夾下新建一文本文件Client.ini,里面記錄著客戶機的采樣間隔,格式為“任意字符串(不能包含等號)=時間(毫秒)”,比如:
ClientInterval=60000
即表示客戶機的采樣間隔為60秒。再把服務器的D盤共享為D$,訪問類型為“完全”。
下面的工作就是待各客戶機運行一段時間后,在服務器就可以一覽眾客戶機的屏幕了。
VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視五、
結(jié)束語
該程序比較簡潔,使用方便,達到了“一機多顯示器”的效果。當然,本程序僅僅是梗概,還很不完善,功能也不多,在實際應用中可逐步完善。
本程序是在VB6.0企業(yè)版下實現(xiàn)的。
看了“VB實現(xiàn)局域網(wǎng)屏幕監(jiān)視介紹”文章的還看了: