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