freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

機房監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)—畢業(yè)設(shè)計論文-資料下載頁

2025-11-22 20:45本頁面

【導讀】的事情,為機房管理員提供一個好的機房監(jiān)控系統(tǒng)是必要的。作者在對機房微機。系統(tǒng)的設(shè)計思路。機房管理系統(tǒng)應(yīng)當能使管理員極其方便的獲取某臺微機的屏幕。視圖,鎖定某臺電腦的鍵盤和鼠標輸入,并能發(fā)送消息給指定的電腦用戶。VC++作為開發(fā)工具,在Win32平臺下實現(xiàn)了一個機房監(jiān)控系統(tǒng)。幕以及服務(wù)器端和客戶端的通信?,F(xiàn)展示了一個完整的方案,具有一定參考價值。

  

【正文】 t)。 private: static DWORD WINAPI ListenThreadPrc(LPVOID lpParam)。 第 21 頁 共 30 頁 SOCKET srvsock。 SOCKADDR_IN srvaddr。 vectorClient clients。 CRITICAL_SECTION cs。 int pos。 }。 class CClient { private: SOCKET local。 sockaddr_in remote_addr。 int remote_addr_len。 HWND hWnd。 BOOL bLocked。 public: BOOL bConnected。 bool UnlockScreen()。 bool LockSrceen()。 static DWORD WINAPI ResponseThreadPrc(LPVOID lpParam)。 void Run()。 CClient() { WSADATA wsaData。 WSAStartup(MAKEWORD(2,2),amp。wsaData)。 remote_addr_len=sizeof(remote_addr)。 local=INVALID_SOCKET。 bLocked = FALSE。 bConnected = FALSE。 }。 ~CClient() { closesocket(local)。 WSACleanup()。 第 22 頁 共 30 頁 }。 void Attach(HWND hWnd){thishWnd=hWnd。}。 bool Connect(char* ip, int port, char* name, char* pass)。 }。 服務(wù)器端有一個 CServer的對象 m_server,該對象創(chuàng)建后: (22221)。 //設(shè)置監(jiān)聽端口為 22221 ()。 //進行監(jiān)聽 而如果服務(wù)器要進行某種操作,比如,鎖定屏幕,則這樣使用 m_server: if(((0))) { AfxMessageBox(ip+屏 幕已鎖住 )。 } else { AfxMessageBox(ip+屏幕未鎖住 )。 } 在客戶端, CClient 有個對象 m_client,該對象創(chuàng)建后: (thism_hWnd)。 //綁定屏幕鎖定下可以操作的窗口 ()。 //鎖定窗口 首先把自身窗口設(shè)置為屏幕鎖定下可以操作的窗口,然后把屏幕鎖定,等待用戶登錄。 在用戶進行登錄時: if(!) //若未連接 { if(((0), 20211, (0), (0))) { //連接成功 TRACE(m_strName+\r\n)。 PostMessage( MYWM_SHOWAPPICONIC )。 ()。 //屏幕解除鎖定 ()。 //開啟監(jiān)聽線程 m_strInfo = 登錄 成功 !。 } 第 23 頁 共 30 頁 else { m_strInfo = 登錄 失敗 !。 } } else { m_strInfo = 重復 登錄 !。 } 首先檢查是否已經(jīng)建立了連接,避免重復登錄。然后調(diào)用 Connect,連接向指定的服務(wù)器端,如果連接成功,屏幕解鎖并開啟監(jiān)聽線程,準備接收來自服務(wù)器的命令并進行響應(yīng)。 屏幕截圖 屏幕截 圖的基 本功 能是通 過兩 個函數(shù) 來實 現(xiàn)的 : Bmp2Stream 和Screen2Bitmap。正如他們的名字所示, Screen2Bitmap 的作用是將屏幕截圖,并保存到一個位圖中,然后返回這個位圖的句柄;而 Bmp2Stream則是為了網(wǎng)絡(luò)傳輸作準備,它接收一個位圖句柄,對這個位圖進行編碼,并拷貝到一個緩沖區(qū)里。下面是這兩個函數(shù)的具體實現(xiàn): HBITMAP Screen2Bitmap() { HDC hscrdc, hmemdc。// 屏幕和內(nèi)存設(shè)備描述表 HBITMAP hbitmap, holdbitmap。// 位圖句柄 int nwidth, nheight。// 位圖寬度和高度 int xscrn, yscrn。// 屏 幕分辨率 //為屏幕創(chuàng)建設(shè)備描述表 hscrdc = CreateDC(display, NULL, NULL, NULL)。 //為屏幕設(shè)備描述表創(chuàng)建兼容的內(nèi)存設(shè)備描述表 hmemdc = CreateCompatibleDC(hscrdc)。 // 獲得屏幕分辨率 xscrn = GetDeviceCaps(hscrdc, HORZRES)。 第 24 頁 共 30 頁 yscrn = GetDeviceCaps(hscrdc, VERTRES)。 nwidth = xscrn。 nheight = yscrn。 // 創(chuàng)建一個與屏幕設(shè)備描述表兼容的位圖 hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight)。 // 把新位圖選到內(nèi)存設(shè)備描述表中 holdbitmap = (HBITMAP)SelectObject(hmemdc, hbitmap)。 // 把屏幕設(shè)備描述表拷貝到內(nèi)存設(shè)備描述表中 BitBlt(hmemdc, 0, 0, nwidth, nheight, hscrdc, 0, 0, SRCCOPY)。 //得到屏幕位圖的句柄 hbitmap = (HBITMAP)SelectObject(hmemdc, holdbitmap)。 //清除 DeleteDC(hscrdc)。 DeleteDC(hmemdc)。 // 返回位圖句柄 return hbitmap。 } BOOL Bmp2Stream( HBITMAPamp。 hBmp, BYTE* amp。bBuf, long amp。size, DWORD type = CXIMAGE_FORMAT_JPG, int nWidth=0, int nHeight=0 ) { if(hBmp != INVALID_HANDLE_VALUE) { CxImage img。 if((hBmp)) //位圖句柄構(gòu)建對象 { if(nWidth = 0) 第 25 頁 共 30 頁 { nWidth = ()。 } if(nHeight = 0) { nHeight = ()。 } if(!(nWidth, nHeight)) //縮放位圖 { return FALSE。 } if((bBuf, size, type)) //編碼 return TRUE。 } } return FALSE。 } 補充一點,普通情況下,屏幕截圖只能獲得一幅位圖,而這幅位圖的大小一般都在 1M 以上,這不利于網(wǎng)絡(luò)傳輸,因此,應(yīng)該進行圖像壓縮,即圖像格式轉(zhuǎn)換。在本系統(tǒng)中,使用 CxImage( CxImage 類庫是一個優(yōu)秀的圖像操 作類庫。它可以快捷地存取、顯示、轉(zhuǎn)換各種圖像 )這個開源項目提供的強大的庫進行編碼,將位圖轉(zhuǎn)化為 Jpg 格式再進行傳輸,這正是 Bmp2Stream函數(shù)存在的目的。 鎖屏和解屏 屏幕的鎖定功能可以通過多種方式實現(xiàn),本系統(tǒng)使用的是 Windows 鉤子( Hook)技術(shù)進行實現(xiàn)的。所謂 鉤子 , 鉤子 (Hook),是 Windows 消息處理機制的一個平臺 ,應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進程所創(chuàng)建的。當消息到達后,在目標窗口處理函數(shù)之前處理它。鉤子機制允許應(yīng)用程序截獲處理 window 消息或特定事件。鉤子實際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當特定的消息發(fā)出,在沒有到達目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。 第 26 頁 共 30 頁 這時鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強制結(jié)束消息的傳遞。 鉤子有很多種, 每一種類型的 Hook 可以使應(yīng)用程序能夠監(jiān)視不同類型的系統(tǒng)消息處理機制。 該系統(tǒng)只需要處理鍵盤和鼠標的輸入,因此只需要 在應(yīng)用程序中 安裝 WH_KEYBOARD Hook 用來監(jiān)視 WM_KEYDOWN and WM_KEYUP 消息 ,還有安裝WH_MOUSE Hook 監(jiān)視從 GetMessage 或者 PeekMessage 函數(shù)返回的鼠標消息 , 使用這個 Hook監(jiān)視輸入到消息隊列中的鼠標消息。 按照 Hook的技術(shù)規(guī)范, Hook API必須寫到一個另一個 dll 中,而在主程序中調(diào)用這個 dll 中的 Hook 函數(shù)。 在本系統(tǒng)中,鎖屏幕和解鎖主要涉及到下面幾個函數(shù): HWND gTargWnd。 //客戶端窗口句柄 pragma data_seg (shared) static HHOOK g_hHookK=NULL。 static HHOOK g_hHookM=NULL。 pragma data_seg () LRESULT CALLBACK MouseProc( int iCode, WPARAM wParam, LPARAM lParam ) { /* *判斷是對哪個窗口進行鼠標輸入, *如果不是對客戶端窗口進行輸入, *直接返回,從而達到屏蔽鼠標的作用 */ if(::GetActiveWindow()!=gTargWnd) return 1。 return CallNextHookEx(g_hHookM,iCode,wParam,lParam)。 } DLLEXPORT int CALLBACK InstallHOOK(HWND hWnd) { gTargWnd = hWnd。 //客戶端窗口句柄復制 //安裝鍵盤和鼠標鉤子 第 27 頁 共 30 頁 g_hHookK=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0)。 g_hHookM=SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0)。 if(g_hHookM amp。amp。 g_hHookK) return TRUE。 else return FALSE。 } DLLEXPORT int CALLBACK UninstallHOOK() { //卸載鍵盤和鼠標鉤子 if (UnhookWindowsHookEx(g_hHookK)==0||UnhookWindowsHookEx(g_hHookM)) return FALSE。 else return TRUE。 } LRESULT CALLBACK KeyboardProc(int iCode, WPARAM wParam, LPARAM lParam ) { /* *判斷是對哪個窗口進行鍵盤輸入, *如果不是對客戶端窗口進行輸入, *直接返回,從而達到屏蔽鍵盤的作用 */ if(::GetActiveWindow()!=gTargWnd) return 1。 return CallNextHookEx(g_hHookK,iCode,wParam,lParam)。 } 結(jié) 論 在分析以往一些機房監(jiān)控系統(tǒng)的基礎(chǔ)上,此設(shè)計采用 Socket 編程技術(shù)和 鉤子 (Hook)技術(shù) 設(shè)計方案。該方案采用 C/S 模式,采用 VC++ 作為開發(fā)工具,在 第 28 頁 共 30 頁 Win32 平臺下實現(xiàn)了一個機房監(jiān)控系統(tǒng) 。 系統(tǒng)能實現(xiàn) 屏幕截圖、鎖定屏幕以及服務(wù)器端和客戶端的通信 等功能。經(jīng)過測試后,該系統(tǒng)達到了預(yù)想中的效果,能夠?qū)崿F(xiàn)簡易的功能。 本文的主要工作有: 1)介紹了機房監(jiān)控的重要行,對 CS 模式、 Socket、 Hook 及都進行了簡單的介紹; 2) 闡述了 Socket 的基本實現(xiàn)原理; 3) 模擬了 機房監(jiān)控 系統(tǒng)的開發(fā)需求,提出了比較詳細的解決方案,闡明了系統(tǒng)的功能模塊的劃分及相互之間的關(guān)系,并詳細描述了每 個模塊的實現(xiàn)過程或者實現(xiàn)方法; 該系統(tǒng)也有一些不盡人意的地方。需求分析并沒有非常細致全面,軟件的性能、健壯性、使用方便及美觀等方面離真正的商業(yè)軟件還有一定的差距;系統(tǒng)并沒有考慮安全因素;另外,該系統(tǒng)并沒有考慮與 機房 其他軟件系統(tǒng)之間的關(guān)系 ,這些都有待今后的完善。 經(jīng)過幾個月來的設(shè)計 ,系統(tǒng)
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1