摘 要:隨著辦公自動(dòng)化的發(fā)展,電子文檔取代手工書寫的趨勢(shì)愈加發(fā)展迅速。但是在辦公過程中由于種種觀念或者業(yè)務(wù)的限制,電子文檔還無法做到完全取代紙質(zhì)辦公。針對(duì)辦公打印監(jiān)控以及商業(yè)打印店計(jì)費(fèi)的問題,我們用Delphi設(shè)計(jì)了打印機(jī)監(jiān)控與計(jì)費(fèi)一體的程序。實(shí)現(xiàn)對(duì)辦公室局域網(wǎng)內(nèi)打印內(nèi)容的監(jiān)控和備份以及用戶在某一段時(shí)間打印成本費(fèi)用的記錄。旨在通過打印機(jī)工作狀況的了解和分析來完善辦公管理,通過實(shí)現(xiàn)在計(jì)算機(jī)上自動(dòng)實(shí)現(xiàn)計(jì)費(fèi)來提高打印店的打印效率。將具體介紹如何實(shí)現(xiàn)監(jiān)控和計(jì)費(fèi)這兩項(xiàng)功能。
關(guān)鍵詞:打印機(jī);監(jiān)控;計(jì)費(fèi);Delphi
中圖分類號(hào):C93 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-291X(2012)19-0209-02
一、引言
打印機(jī)是現(xiàn)代企業(yè)中必不可少的設(shè)備,在使用的過程中,將一臺(tái)打印機(jī)共享出來,通過企業(yè)的網(wǎng)絡(luò),多個(gè)人一起使用成為一個(gè)普遍的現(xiàn)象,這樣即節(jié)省了企業(yè)的辦公費(fèi)用,同時(shí)又為員工提供了方便,可謂是一舉兩得的事情。不過同時(shí)也帶來了不少隱患,一些員工利用企業(yè)的打印機(jī)來做私活,造成企業(yè)資源的浪費(fèi)。作為企業(yè)的管理者,如何對(duì)打印機(jī)的使用情況進(jìn)行監(jiān)管,讓它發(fā)揮最大的效能呢?那就需要使用企業(yè)打印監(jiān)控軟件,該類軟件不但可以記錄誰使用了打印機(jī),打印了哪些文件,而且還能夠記錄打印文件的內(nèi)容,從而對(duì)打印機(jī)進(jìn)行有效的管理。
二、打印工作過程及分析
1.windows系統(tǒng)打印原理。為了實(shí)現(xiàn)我們的目標(biāo),我們需要了解系統(tǒng)下打印的實(shí)現(xiàn)過程。打印用戶在系統(tǒng)下打開一篇文檔,文檔在屏幕上顯示出來,點(diǎn)選打印按鈕后,計(jì)算機(jī)將文檔發(fā)送到本地打印機(jī)或者網(wǎng)絡(luò)打印機(jī)進(jìn)行打印,這是我們實(shí)際操作打印文檔的過程,那么在這些操作的背后系統(tǒng)為我們做了哪些工作呢?實(shí)際上您在Windows下使用打印機(jī)時(shí),系統(tǒng)自己?jiǎn)?dòng)了一個(gè)包含GDI32動(dòng)態(tài)鏈接庫(kù)模塊、打印驅(qū)動(dòng)程序動(dòng)態(tài)連結(jié)模塊(帶.DRV擴(kuò)展名)、Windows后臺(tái)打印程序以及有用到的其他相關(guān)模塊。在Windows系統(tǒng)中(NT內(nèi)核的操作系統(tǒng)),通過進(jìn)程方式來組織和管理一個(gè)應(yīng)用程序的執(zhí)行,每個(gè)進(jìn)程都有自己的虛擬地址空間,這個(gè)地址空間是進(jìn)程私有的,進(jìn)程在自己的地址空間完成各種操作,比如動(dòng)態(tài)庫(kù)加載、線程創(chuàng)建等。在Windows系統(tǒng)中,一個(gè)應(yīng)用程序涉及圖形輸出的功能操作都需要調(diào)用GDI(Graphics Driver Interface),GDI通過與顯示設(shè)備打印機(jī)的驅(qū)動(dòng)程序交互來協(xié)同處理應(yīng)用程序的調(diào)用請(qǐng)求。GDI系統(tǒng)服務(wù)以Gdi32.Dll動(dòng)態(tài)庫(kù)的形式給出。
2.程序設(shè)計(jì)思路。根據(jù)對(duì)Windows系統(tǒng)的打印體系結(jié)構(gòu)的了解,我們提出基于Delphi的客戶—服務(wù)器模式。首先,通過使用winsock技術(shù)對(duì)Windows進(jìn)行監(jiān)控。監(jiān)控端通過winsock技術(shù)將打印的信息通過文件形式傳輸?shù)椒?wù)端(Socket.ReceiveText),服務(wù)端通過調(diào)用自定義的打印控制單元MyUtils中的相關(guān)函數(shù)得到文件的完整路徑名稱。接著,將接受到的ReceiveText信息添加到ListView中,同時(shí)啟動(dòng)存儲(chǔ)程序?qū)⒃摯蛴∥募晕募鞯男问酱鎯?chǔ)在數(shù)據(jù)庫(kù)中。待打印完成后,若要查看打印過的文件,直接從服務(wù)端數(shù)據(jù)庫(kù)中導(dǎo)出流文件,并給予恢復(fù)相應(yīng)的文件格式,例如恢復(fù)文檔格式,采用Word打開即可。
服務(wù)端計(jì)費(fèi)功能:(1)截取打印機(jī)狀態(tài)數(shù)據(jù)到數(shù)據(jù)庫(kù)。(2)讀取數(shù)據(jù)實(shí)現(xiàn)打印功能。AddJob(FJobsList)將監(jiān)控端的打印信息讀取出來,依據(jù)打印頁數(shù)和打印紙張類型計(jì)算打印費(fèi)用,并將信息裝載到lvStatus列表中,該列表在打印內(nèi)容監(jiān)控中起到顯示打印內(nèi)容作業(yè)及費(fèi)用。代碼如下:
……
sSql :=’select * from printerprice where 打印類型=’’’+
List.Strings[6]+’’’’;
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.Add(sSql);
Adoquery1.Open;
P:=Adoquery1.fields[1].asdouble;//從打印價(jià)格信息表中獲取打印的單價(jià)
List.Strings[i+1]:=P*List.Strings[11];//計(jì)算打印費(fèi)用
SubItems.Add(List.Strings[i+1]);//裝載打印信息
……
3.打印任務(wù)客戶端(Print Jobs Monitor)的設(shè)計(jì)與實(shí)現(xiàn)。打印監(jiān)控端也放在打印機(jī)所在的機(jī)器上,功能:(1)完成與服務(wù)端的通信;(2)通過線程的方式獲取打印信息,每一次的打印內(nèi)容都被監(jiān)測(cè)到,并將打印的API函數(shù)觸發(fā)的打印相關(guān)信息保存在文件列表中,通過Socket將這些打印信息發(fā)送到服務(wù)端,以供服務(wù)端調(diào)用MyUtils單元中的函數(shù)完成打印信息的列舉和打印文件保存。
三、結(jié)束語
現(xiàn)在雖然有許多監(jiān)控軟件的出現(xiàn),但是都還多為實(shí)現(xiàn)對(duì)打印內(nèi)容以及打印文件的格式的監(jiān)控,只是把所需要打印的文件以圖片的格式儲(chǔ)存。這個(gè)軟件系統(tǒng)程序的設(shè)計(jì),完成了對(duì)打印文件的完整備份,不僅僅備份打印內(nèi)容,而且在還原時(shí)依舊以相同的格式還原備份文件。這項(xiàng)監(jiān)控功能的實(shí)現(xiàn)對(duì)于一個(gè)辦公室內(nèi)的辦公提供了很大的方便,而且對(duì)每臺(tái)客戶機(jī)的監(jiān)控可以控制員工在工作期間對(duì)打印機(jī)的使用情況,便于企業(yè)公司設(shè)備管理。軟件設(shè)計(jì)目前仍然還有一些不足,客戶端需要客戶機(jī)要一定自行的開機(jī)運(yùn)行,并且需要客戶端一直運(yùn)行,現(xiàn)階段只適用于辦公室的局域網(wǎng)內(nèi)使用。
參考文獻(xiàn):
[1] 劉凌霞,谷保慶.C++ Builder中網(wǎng)絡(luò)監(jiān)控的實(shí)現(xiàn)[J].安陽師范學(xué)院學(xué)報(bào),2005,(3):69-71.
[2] Print 打印監(jiān)控程序[EB/OL].http://www.pudn.com/downloads83/sourcecode/delphi_control/detail318814.html,2007-08-13.
[3] HBPrinterMon 監(jiān)控本地打印機(jī)程序[EB/OL].http://www.pudn.com/downloads82/sourcecode/windows/printing/detail317146.html,
2007-08-09.
[4] 陳天華.面向?qū)ο蟪绦蛟O(shè)計(jì)與Visual C++ 6.0教程[M].北京:清華大學(xué)出版社,2006:95-246.
[5] 楊長(zhǎng)春,劉俊.Delphi程序設(shè)計(jì)教程:第2版[M].北京:清華大學(xué)出版社,2008:272-336.[責(zé)任編輯 王曉燕]