楊鵬 尹小敏
摘要:討論了機(jī)房機(jī)群遙控程序的設(shè)計(jì)方法,給出了關(guān)鍵過(guò)程的分析與詳細(xì)代碼。
關(guān)鍵詞:UDP;廣播;Windows Hook;Delphi
中圖分類號(hào):TP311.52? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? 文章編號(hào):1009-3044(2018)34-0016-05
1 背景
機(jī)房管理和維護(hù)工作中,經(jīng)常需要在許多臺(tái)具有相同軟硬件配置的計(jì)算機(jī)上進(jìn)行重復(fù)的操作,特別是大多數(shù)學(xué)校機(jī)房也會(huì)承擔(dān)各種人機(jī)對(duì)話考試任務(wù)。為減輕工作強(qiáng)度,一般會(huì)先在一臺(tái)計(jì)算機(jī)上進(jìn)行設(shè)置,然后使用網(wǎng)絡(luò)克隆的方式部署到其他計(jì)算機(jī)上。但也有不少任務(wù)是無(wú)法通過(guò)網(wǎng)絡(luò)克隆的方法完成的,必須進(jìn)行單機(jī)操作。因此,開發(fā)一種能夠在局域網(wǎng)中遙控機(jī)房所有計(jì)算機(jī)的實(shí)用工具非常必要。該程序的界面如圖1所示。
2 設(shè)計(jì)思路
根據(jù)實(shí)際操作的需要,機(jī)群遙控程序必須允許由任何一臺(tái)計(jì)算機(jī)遙控網(wǎng)絡(luò)中的其他計(jì)算機(jī),因此,遙控程序必須能夠在遙控模式與受控模式之間切換。該程序的基本設(shè)計(jì)思路為:所有相關(guān)的計(jì)算機(jī)以受控模式啟動(dòng)該程序,然后進(jìn)行偵聽;當(dāng)管理員將選擇的計(jì)算機(jī)切換到遙控模式并開始遙控時(shí),利用鉤子程序收集所有鼠標(biāo)和鍵盤消息,以UDP協(xié)議向網(wǎng)絡(luò)中發(fā)出廣播;當(dāng)受控計(jì)算機(jī)接收到鼠標(biāo)鍵盤消息后再模擬相應(yīng)事件,從而達(dá)到遙控目的。
3 消息隊(duì)列的定義與實(shí)現(xiàn)
遙控端程序與受控端程序通過(guò)消息隊(duì)列傳遞遙控?cái)?shù)據(jù),因此,鍵盤、鼠標(biāo)鉤子數(shù)據(jù)結(jié)構(gòu)的定義與消息隊(duì)列的定義同時(shí)在服務(wù)于兩個(gè)模塊,其定義與實(shí)現(xiàn)如下。
3.2 消息轉(zhuǎn)換器的定義與實(shí)現(xiàn)
消息轉(zhuǎn)換器的作用是在遙控端將命令及其參數(shù)轉(zhuǎn)換為文本,而在受控端將文本轉(zhuǎn)換為命令和參數(shù)。對(duì)于遙控端程序,將鉤子獲取的數(shù)據(jù)轉(zhuǎn)換為文本,送入消息隊(duì)列,等待定時(shí)器發(fā)送;對(duì)于受控端程序,將網(wǎng)絡(luò)獲取的文本數(shù)據(jù)送入執(zhí)行隊(duì)列,等待命令執(zhí)行定時(shí)器將文本轉(zhuǎn)換為對(duì)應(yīng)的命令并執(zhí)行。其定義與關(guān)鍵實(shí)現(xiàn)如下。
6 結(jié)束語(yǔ)
在實(shí)際工作中,該機(jī)群遙控程序極大地提高了各類考試系統(tǒng)的部署效率,降低了機(jī)房維護(hù)人員的工作強(qiáng)度。當(dāng)然,該程序也存在可以改進(jìn)之處,例如,UDP廣播可能導(dǎo)致的網(wǎng)絡(luò)阻塞,計(jì)算機(jī)切換到遙控狀態(tài)時(shí)并不會(huì)檢查局域網(wǎng)中是否已存在遙控端程序。
參考文獻(xiàn):
[1] 吳林, 劉曄. 基于VB.NET實(shí)現(xiàn)全局鍵盤鼠標(biāo)鉤子[J]. 電腦知識(shí)與技術(shù), 2010, 6(36): 10328-10331.
[2] 孫建華, 劉金龍. VB中利用日志記錄鉤子實(shí)現(xiàn)鍵盤監(jiān)控[J]. 電腦編程技巧與維護(hù), 2011(2): 3-4.
[3] 魏景東. 利用HOOK技術(shù)對(duì)鍵盤輸入監(jiān)視[J]. 電腦編程技巧與維護(hù), 2011(11): 86-88.
[4] 李納璺, 潘小盟. 利用MFC多線程技術(shù)開發(fā)基于UDP數(shù)據(jù)廣播的局域網(wǎng)絡(luò)會(huì)議程序[J]. 電腦編程技巧與維護(hù), 2004(2): 70-73.
[5] 朱浩, 呂明. 用UDP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)語(yǔ)音廣播[J]. 電信工程技術(shù)與標(biāo)準(zhǔn)化, 2005(8): 53-56.
【通聯(lián)編輯:謝媛媛】