陳玥秀, 張應(yīng)中, 羅曉芳
(大連理工大學(xué) 機(jī)械工程學(xué)院, 大連 116024)
隨著AutoCAD等制圖軟件的廣泛使用, 傳統(tǒng)的手工繪圖已經(jīng)被電子繪圖所取代. 雖然電子工程圖紙有繪制速度快, 傳輸便捷等優(yōu)點(diǎn), 但是易于泄露和損壞.工程圖紙是企業(yè)的知識(shí)財(cái)富, 是重要的商業(yè)機(jī)密, 如果泄露和損壞, 會(huì)給企業(yè)帶來(lái)巨大的損失, 因此保證工程圖紙安全有非常重要的意義.
現(xiàn)有的PDM(Product Data Management)系統(tǒng)有很強(qiáng)的圖檔保護(hù)功能, 包括防病毒侵入, 記錄文檔操作等,但缺乏嵌入具體繪圖軟件的圖紙安全管理. 目前的安全管理系統(tǒng)對(duì)于圖紙加密算法的研究在不斷深入, 但對(duì)于管理用戶(hù)操作安全的技術(shù)研究卻很少. 文獻(xiàn)[1]通過(guò)研究加密算法和數(shù)字水印等技術(shù), 保障圖紙?jiān)诹鬓D(zhuǎn)過(guò)程中信息的機(jī)密性、完整性和真實(shí)性, 實(shí)現(xiàn)了圖紙加密、圖紙電子簽章防篡改和篡改檢測(cè)功能. 文獻(xiàn)[2]主要針對(duì)DWG圖紙格式特點(diǎn), 提取圖紙中各種實(shí)體信息, 然后對(duì)信息進(jìn)行置亂處理達(dá)到圖紙加密保護(hù)的目的. 文獻(xiàn)[1,2]提出的圖紙安全管理系統(tǒng), 可以在圖紙流轉(zhuǎn)中保護(hù)圖紙信息的安全, 但是對(duì)于企業(yè)內(nèi)工作人員的泄密并沒(méi)有加以防范. 工作人員與圖紙的接觸最為緊密頻繁, 他們對(duì)圖紙的越權(quán)訪(fǎng)問(wèn)和不當(dāng)操作, 都會(huì)造成圖紙信息的內(nèi)部泄露, 而且是日常工作中圖紙信息泄密的主要方式.
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于ObjectARX的工程圖紙安全管理系統(tǒng), 根據(jù)用戶(hù)的操作權(quán)限, 能夠有效的控制用戶(hù)對(duì)AutoCAD某些功能(如打印、保存和復(fù)制等)的操作, 還能夠有效防止用戶(hù)使用工具(PrtSc和QQ等)截屏, 從而能夠保障工程圖紙的安全, 對(duì)工程圖紙?jiān)诰W(wǎng)絡(luò)環(huán)境下的安全的管理有重要的作用.
ObjectARX是AutoDesk針對(duì)AutoCAD平臺(tái)的二次開(kāi)發(fā)而推出的一個(gè)開(kāi)發(fā)軟件包, 是一個(gè)以C++語(yǔ)言為基礎(chǔ)的面向?qū)ο蟮拈_(kāi)發(fā)環(huán)境和應(yīng)用程序接口.ObjectARX應(yīng)用程序本質(zhì)上是一個(gè)Windows的DLL程序, 共享 AutoCAD的地址空間, 使用ObjectARX可直接訪(fǎng)問(wèn)AutoCAD數(shù)據(jù)庫(kù)的核心數(shù)據(jù)庫(kù)結(jié)構(gòu)、圖形系統(tǒng)以及AutoCAD幾何構(gòu)造核心[3]. 同時(shí)可以在ObjectARX編程環(huán)境下添加新類(lèi), 并將其供其他程序使用, 簡(jiǎn)潔高效的實(shí)現(xiàn)多種復(fù)雜的功能.
當(dāng)在AutoCAD發(fā)生各種事件時(shí), 例如執(zhí)行AutoCAD命令、修改系統(tǒng)變量、保存和退出圖形編輯器等等, 事件通知者對(duì)象會(huì)自動(dòng)將這個(gè)事件傳遞給事件接收者對(duì)象, 接收到消息后會(huì)對(duì)事件做出響應(yīng). 事件接收者對(duì)象稱(chēng)為反應(yīng)器[4], 反應(yīng)器的類(lèi)型不同, 接收的事件也不相同. 事件的通知者對(duì)象根據(jù)需要可以有不同的反應(yīng)器, 以便監(jiān)視并響應(yīng)不同的類(lèi)型的事件. 當(dāng)事件發(fā)生后, 通知者對(duì)象會(huì)調(diào)用反應(yīng)器列表中對(duì)應(yīng)的通知函數(shù). 事件的處理過(guò)程如圖1所示.
鉤子是Windows操作系統(tǒng)中一種特殊的消息處理函數(shù). 當(dāng)某應(yīng)用程序發(fā)出消息后, 在沒(méi)有到達(dá)目的窗口前, 鉤子過(guò)程會(huì)捕獲感興趣的消息. 這時(shí)鉤子函數(shù)可以處理并改變消息, 或決定是否繼續(xù)傳遞消息,從而實(shí)現(xiàn)消息的攔截處理過(guò)程[5]. 鉤子按照作用范圍分為進(jìn)程內(nèi)鉤子和全局鉤子. 進(jìn)程內(nèi)鉤子監(jiān)視指定進(jìn)程的主線(xiàn)程的事件消息, 全局鉤子監(jiān)視Windows操作系統(tǒng)中所有線(xiàn)程的事件消息. 使用鉤子前用SetWindowsHookEx()函數(shù)來(lái)安裝鉤子過(guò)程, 不再使用鉤子后用UnHookWindowsHookEx()函數(shù)進(jìn)行卸載.

圖1 事件處理過(guò)程
API HOOK是指截獲特定系統(tǒng)或進(jìn)程對(duì)某個(gè)API函數(shù)的調(diào)用, 使API函數(shù)轉(zhuǎn)向自定義代碼的技術(shù).Windows中的每個(gè)進(jìn)程都有特定的地址空間, 進(jìn)程在調(diào)用函數(shù)時(shí), 只能調(diào)用自己地址空間中的函數(shù). 為了改變目標(biāo)進(jìn)程對(duì)API函數(shù)的執(zhí)行結(jié)果, 必須先自定義一個(gè)攔截函數(shù)來(lái)替換目標(biāo)函數(shù)注入到目標(biāo)進(jìn)程中. 使用微軟的Detours庫(kù)可以攔截目標(biāo)API函數(shù), 攔截代碼是在動(dòng)態(tài)運(yùn)行時(shí)加載的. Detours技術(shù)將目標(biāo)函數(shù)前幾條指令替換為其無(wú)條件跳轉(zhuǎn)到攔截函數(shù)的指令, 并將被替換的指令和目標(biāo)函數(shù)其余部分的無(wú)條件分支保存到跳板函數(shù)中. 當(dāng)執(zhí)行到目標(biāo)函數(shù)時(shí), 將直接跳轉(zhuǎn)到攔截函數(shù), 攔截函數(shù)可以執(zhí)行適當(dāng)?shù)臄r截處理. 攔截函數(shù)可以直接返回對(duì)源函數(shù)的控制, 也可以調(diào)用跳板函數(shù), 該函數(shù)調(diào)用目標(biāo)函數(shù)而不被攔截. 當(dāng)目標(biāo)函數(shù)完成時(shí), 返回到攔截函數(shù), 攔截函數(shù)處理后, 將控制權(quán)返回給源函數(shù)[6]. 圖2展示了Detours技術(shù)攔截前后函數(shù)調(diào)用過(guò)程.

圖2 Detours攔截前后函數(shù)調(diào)用過(guò)程
圖紙文檔被打開(kāi)后是明文, 此時(shí)用戶(hù)的不當(dāng)操作將會(huì)造成圖紙信息的泄露和破壞. 例如當(dāng)用戶(hù)使用AutoCAD程序的另存為和打印操作, 圖紙信息將會(huì)泄露;當(dāng)不允許修改的圖紙被打開(kāi)后, 用戶(hù)的保存操作會(huì)破壞圖紙信息. 諸如此類(lèi)的用戶(hù)不當(dāng)操作, 均危及到圖紙信息的安全. 圖紙操作安全管理系統(tǒng)以圖紙管理系統(tǒng)為基礎(chǔ), 以用戶(hù)的操作權(quán)限為基準(zhǔn)限制不同權(quán)限用戶(hù)對(duì)圖紙的操作. 安全管理系統(tǒng)主要包括四大功能:對(duì)圖紙打印控制, 圖紙內(nèi)容修改控制, 圖紙內(nèi)容復(fù)制粘貼控制, 截屏控制, 安全控制流程如圖3所示.

圖3 圖紙安全控制流程
打印控制的目的是, 禁止沒(méi)有打印權(quán)限的用戶(hù)將圖紙以明文的方式打印成靜態(tài)圖紙. 通過(guò)對(duì)AutoCAD操作和ObjectARX技術(shù)的研究, 發(fā)現(xiàn)AutoCAD的每一個(gè)操作對(duì)應(yīng)一個(gè)命令, 且每個(gè)命令對(duì)應(yīng)一個(gè)字符串, 而ARX反應(yīng)器恰恰是用來(lái)監(jiān)視AutoCAD命令的. 通過(guò)使用ARX反應(yīng)器來(lái)監(jiān)視打印(PLOT)命令, 截獲到打印命令后, 判斷當(dāng)前操作用戶(hù)是否具有圖檔打印權(quán)限, 如果可以打印則將命令繼續(xù)傳遞, 否則終止打印命令.
保存操作主要有兩大類(lèi), 一是保存操作, 將當(dāng)前未命名的圖紙命名保存或?qū)⒁衙膱D紙更新保存;二是另存為操作, 將當(dāng)前未命名的圖紙命名保存或?qū)⒁衙膱D紙另外存儲(chǔ). 在AutoCAD中保存命令是QSAVE, 另存為命令是SAVEAS和SAVE. 通過(guò)控制保存(QSAVE)命令, 可以禁止無(wú)修改權(quán)限的用戶(hù)修改圖紙. 通過(guò)控制另存為(SAVEAS和SAVE)命令, 可以禁止用戶(hù)將圖紙保存到其他磁盤(pán)文件中, 有效防止圖紙脫離管理系統(tǒng)造成泄露. 使用ARX反應(yīng)器來(lái)監(jiān)視保存命令, 截獲QSAVE命令時(shí), 通過(guò)判斷用戶(hù)的權(quán)限來(lái)決定是否繼續(xù)傳遞QSAVE命令, 截獲SAVEAS和SAVE命令后, 直接禁止命令繼續(xù)傳遞.
通過(guò)控制保存操作可以使不具備修改權(quán)限的用戶(hù)無(wú)法保存被修改的圖紙, 但是被修改過(guò)的圖紙?jiān)趫?zhí)行關(guān)閉圖檔(CLOSE和CLOSEALL)命令和關(guān)閉AutoCAD程序(QUIT和EXIT)命令時(shí), 會(huì)彈出是否保存提示對(duì)話(huà)框. 若用戶(hù)點(diǎn)擊按鈕“是”, 則當(dāng)前圖紙將被保存, 圖紙內(nèi)容被修改. 經(jīng)研究發(fā)現(xiàn), 未修改過(guò)的圖紙將直接被關(guān)閉, 因此在關(guān)閉前告知應(yīng)用程序圖紙沒(méi)有修改即可. 該何時(shí)告知應(yīng)用程序? 一是在用戶(hù)所有的修改操作結(jié)束之后, 二是在關(guān)閉命令執(zhí)行前.AutoCAD中圖紙的修改命令繁多, 且難以預(yù)測(cè)用戶(hù)何時(shí)停止修改圖紙, 但是關(guān)閉命令可以預(yù)測(cè)和監(jiān)視. 使用ARX反應(yīng)器監(jiān)控關(guān)閉命令, 在關(guān)閉命令執(zhí)行前通知程序圖紙未被修改, 然后執(zhí)行關(guān)閉命令將圖紙直接關(guān)閉.
在AutoCAD的剪切板中有這樣一組操作:粘貼、剪切和復(fù)制剪裁, 用來(lái)存儲(chǔ)(或提取)選中的對(duì)象到剪切板中, 實(shí)現(xiàn)圖形內(nèi)部和圖形之間對(duì)象的傳輸. 對(duì)圖紙內(nèi)容的復(fù)制粘貼操作, 實(shí)際上是使用Windows剪切板.因?yàn)閃indows的剪切板是進(jìn)程間的通訊, 所有進(jìn)程共享剪切板[7], 所以當(dāng)用戶(hù)執(zhí)行粘貼操作時(shí), 會(huì)將被復(fù)制或剪切的圖紙信息從Windows剪切板中取出, 造成圖紙信息泄露. 通過(guò)研究Windows剪切板的工作原理,我們發(fā)現(xiàn)數(shù)據(jù)在剪切板中的存取是通過(guò)API函數(shù)來(lái)實(shí)現(xiàn)的. 復(fù)制剪切操作過(guò)程有四個(gè)步驟, 首先OpenClipboard()打開(kāi)剪切板, 接著Empty Clipboard()清空剪切板內(nèi)容, 然后SetClipboardData()設(shè)置剪切板內(nèi)容, 最后CloseClipboard()關(guān)閉剪切板. 粘貼操作過(guò)程有三個(gè)步驟, 首先 OpenClipboard()打開(kāi)剪切板, 然后GetClipboardData()獲取剪切板內(nèi)容, 最后CloseClipboard()關(guān)閉剪切板.
復(fù)制粘貼的核心是使用SetClipboardData()和GetClipboardData()函數(shù)存取數(shù)據(jù)到剪切板中. 使用API HOOK技術(shù), 自定義中間函數(shù)替換目標(biāo)函數(shù)SetClipboardData()和GetClipBoardData(), 實(shí)現(xiàn)復(fù)制粘貼控制.
現(xiàn)在有許多工具都帶有截圖功能, 使用的方法更是多種多樣, 從技術(shù)上講, 要徹底防止其他應(yīng)用程序進(jìn)行拷屏是不可能的. 本文分析最常用的兩種截圖方法,鍵盤(pán)上的“屏幕拷貝”功能鍵和軟件截屏.
禁止“屏幕拷貝”功能鍵截屏, 即攔截鍵盤(pán)上的PrtSc鍵. 我們常用鍵盤(pán)鉤子(WH_KEYBOARD)來(lái)截獲鍵盤(pán)消息, 讓它不再繼續(xù)傳遞. 經(jīng)研究發(fā)現(xiàn)PrtSc是系統(tǒng)熱鍵, 鍵盤(pán)鉤子不能獲取到系統(tǒng)鍵的輸入, 所以鍵盤(pán)鉤子不能屏蔽P r t S c鍵. 但底層鍵盤(pán)鉤子(WH_KEYBOARD_LL)可以截獲系統(tǒng)鍵[8], 并根據(jù)用戶(hù)操作權(quán)限決定是否對(duì)消息進(jìn)行攔截. 當(dāng)用戶(hù)按下PrtSc或Alt+PrtSc時(shí), 將消息攔截即可屏蔽“屏幕拷貝”功能鍵.
常用的截屏軟件工具有QQ、微信、360瀏覽器等[9]. 軟件截屏的一般流程是先獲得屏幕設(shè)備對(duì)象句柄, 然后再根據(jù)句柄對(duì)屏幕數(shù)據(jù)進(jìn)行獲取, 生成了我們截取的圖片, 截圖保存到剪切板中等待粘貼到界面中.這一系列的操作中使用到許多API函數(shù), 但是我們不能使用API HOOK技術(shù)屏蔽軟件截屏工具, 原因主要有以下兩點(diǎn):一是在截圖中所用到的一些API函數(shù)是圖形化應(yīng)用軟件的公用函數(shù), 阻止這類(lèi)函數(shù)將影響AutoCAD的正常使用;二是無(wú)法預(yù)知用戶(hù)使用何種截圖軟件, 若使用API HOOK技術(shù)需要將鉤子注入到所有可以截圖的軟件中, 這種做法是無(wú)法實(shí)現(xiàn)的. 本文通過(guò)分析軟件截屏的工作原理, 將使用定時(shí)器對(duì)Windows剪切板進(jìn)行清除, 從而達(dá)到攔截軟件截屏的目的.
基于VS2010, 使用ObjectARX技術(shù)二次開(kāi)發(fā)AutoCAD程序, 實(shí)現(xiàn)了AutoCAD中打印、保存、復(fù)制粘貼和其他軟件截圖工具的控制. 當(dāng)用戶(hù)使用圖紙管理系統(tǒng)查看圖紙時(shí), 圖紙操作安全管理系統(tǒng)自動(dòng)啟用, 即將ObjectARX文件自動(dòng)加載到AutoCAD程序中, 當(dāng)用戶(hù)執(zhí)行敏感操作時(shí), 通過(guò)判斷用戶(hù)權(quán)限來(lái)限制用戶(hù)的操作, 最后關(guān)閉AutoCAD時(shí)自動(dòng)卸載ObjectARX文件.
打印控制的目的是禁止不具備打印權(quán)限的用戶(hù)打印圖紙, 造成圖紙信息泄露. 系統(tǒng)通過(guò)判斷用戶(hù)的打印權(quán)限, 控制用戶(hù)的打印操作. 允許打印的用戶(hù)正常使用打印功能, 禁止打印的用戶(hù)其打印操作將會(huì)被攔截, 同時(shí)AutoCAD控制臺(tái)提示禁止打印.
當(dāng)用戶(hù)輸入命令執(zhí)行前, 文檔管理反應(yīng)器中的documentLockModeChanged()函數(shù)將會(huì)被調(diào)用. 函數(shù)documentLockModeChange()是一個(gè)鎖定請(qǐng)求的回調(diào)函數(shù), 在函數(shù)documentLockModeChanged()執(zhí)行期間調(diào)用veto()函數(shù)會(huì)使鎖定請(qǐng)求被阻止, 意味著在開(kāi)始執(zhí)行命令之前取消命令. 要阻止打印(PLOT)命令執(zhí)行,即需要將命令在執(zhí)行前取消掉. 具體實(shí)現(xiàn)代碼如下:

保存控制的目的主要有兩個(gè), 一是防止不具備修改權(quán)限的用戶(hù)在查閱圖紙時(shí)修改圖紙, 造成圖紙信息損壞, 二是禁止用戶(hù)使用另存為方法, 保障圖紙存儲(chǔ)位置不發(fā)生改變. 保存操作的控制方法分為兩類(lèi), 第一類(lèi)是對(duì)AutoCAD中QSAVE、SAVEAS、SAVE命令的攔截, 與打印命令的控制方法相同, 此處不再贅述. 第二類(lèi)是執(zhí)行關(guān)閉圖檔(CLOSE和CLOSEALL)命令和關(guān)閉AutoCAD程序(QUIT和EXIT)命令時(shí), 攔截保存提示框.
由上文敘述可知, 為攔截保存提示框, 需要在關(guān)閉命令執(zhí)行前, 通知AutoCAD程序圖紙未修改. 編輯反應(yīng)器用來(lái)監(jiān)視AutoCAD命令, 當(dāng)開(kāi)始執(zhí)行命令前會(huì)觸發(fā)commandWillStart()函數(shù). 通過(guò)研究發(fā)現(xiàn),AutoCAD是通過(guò)變量DBMOD的值來(lái)判斷圖紙是否被修改過(guò), 從而來(lái)確定關(guān)閉時(shí)是否彈出保存提示框. 變量DBMOD是只讀的, 因此不能直接修改變量的值, 需要通過(guò)接口函數(shù)ACDBSETDBMOD()來(lái)修改變量值.因此在COMMANDWILLSTART()函數(shù)中, 使用ACDBSETDBMOD()接口函數(shù)使變量DBMOD的值為0, 即告知AUTOCAD程序圖紙未被修改, 隨后繼續(xù)執(zhí)行關(guān)閉命令將程序關(guān)閉.
AutoCAD程序通過(guò)Windows剪切板來(lái)實(shí)現(xiàn)圖形對(duì)象的復(fù)制粘貼操作, 各圖檔之間可以快捷方便的傳遞信息. 但是使用復(fù)制粘貼功能, 可能會(huì)導(dǎo)致重要圖紙信息的泄露. 本文使用API HOOK技術(shù)控制復(fù)制粘貼操作, 可以有效的防止用戶(hù)泄露圖紙信息. 自定義一個(gè)與目標(biāo)函數(shù)結(jié)構(gòu)相同的中間函數(shù), 用來(lái)判斷用戶(hù)是否有復(fù)制粘貼權(quán)限, 如果有, 取消對(duì)操作的攔截, 執(zhí)行原函數(shù), 否則就什么也不做, 直接返回一個(gè)NULL. 使用Detours庫(kù)中DetourAttach()函數(shù)將目標(biāo)函數(shù)用中間函數(shù)替換, 即可實(shí)現(xiàn)復(fù)制粘貼操作的控制. 但是在攔截開(kāi)始之前還需要一些初始化工作, 首先初始化一個(gè)detour事物, 更新和事物相關(guān)的線(xiàn)程, 接下來(lái)開(kāi)始執(zhí)行目標(biāo)API函數(shù)的攔截, 最后使detour生效. 復(fù)制粘貼操作監(jiān)控流程如圖4所示.

圖4 復(fù)制粘貼操作監(jiān)控流程
自定義攔截函數(shù)代碼如下:


本文實(shí)現(xiàn)了對(duì)鍵盤(pán)的PrtSc鍵和常用軟件的截屏控制, 當(dāng)有圖紙打開(kāi)且用戶(hù)不具備截屏權(quán)限時(shí), 則截屏失敗.
根據(jù)上文介紹的鉤子函數(shù)使用方法, 首先建立鍵盤(pán)鉤子過(guò)程函數(shù), 用來(lái)攔截PrtSc鍵. 當(dāng)有消息產(chǎn)生時(shí),先經(jīng)過(guò)鉤子函數(shù), 判斷是否是PrtSc和Alt+PrtSc鍵被按下, 如果是就截獲消息不再向目標(biāo)窗口傳遞, 其他消息將繼續(xù)向下傳遞. 然后使用SetWindowsHookEx()函數(shù)將已定義的鉤子過(guò)程安裝到鉤子鏈表中, 并指定鉤子類(lèi)型為底層鍵盤(pán)鉤子, 用來(lái)攔截鍵盤(pán)截屏消息. 當(dāng)用戶(hù)打開(kāi)圖紙文件時(shí), 通過(guò)判斷用戶(hù)的權(quán)限來(lái)決定是否安裝鉤子過(guò)程, 無(wú)權(quán)限的用戶(hù)按下P r t S c或Alt+PrtSc鍵時(shí), 按鍵失效. 在圖紙被關(guān)閉前, 調(diào)用UnhookWindowsHookEx()函數(shù)將鉤子卸載, 釋放系統(tǒng)的資源.
關(guān)鍵實(shí)現(xiàn)部分的代碼如下所示:


通過(guò)對(duì)軟件截屏的工作原理和實(shí)際應(yīng)用條件的研究, 本文通過(guò)設(shè)置定時(shí)器來(lái)周期性清空剪切板來(lái)攔截常用軟件的截屏操作. 使用定時(shí)器來(lái)周期性執(zhí)行清空剪切板操作, 并根據(jù)需要自定義時(shí)間周期為5秒. 當(dāng)不具備截圖權(quán)限的用戶(hù)打開(kāi)圖紙后, 使用SetTimer()函數(shù)安裝定時(shí)器, 開(kāi)始攔截截圖軟件, 關(guān)閉圖紙后用KillTimer()函數(shù)取消定時(shí)器, 恢復(fù)軟件的截圖功能.
打開(kāi)AutoCAD應(yīng)用程序, 將所開(kāi)發(fā)的.arx程序加載到AutoCAD中, 開(kāi)始測(cè)試所攔截的命令是否失效.在加載.arx程序前后, 使用打印命令時(shí)AutoCAD界面效果對(duì)比如圖5所示.

圖5 打印(PLOT)命令攔截效果圖
圖5左側(cè)是正常使用打印時(shí)彈出的打印對(duì)話(huà)框,右側(cè)是執(zhí)行攔截后控制臺(tái)輸出提示并彈出提示框, 對(duì)比效果圖可以證明打印命令被攔截而失效. 程序?qū)τ诒4婷畹臄r截具有同樣的效果, 攔截后將只彈出消息和提示框, 而不再有保存對(duì)話(huà)框. 使用鍵盤(pán)截屏鍵和日常工作中常用軟件(例如QQ、微信和360瀏覽器)的截圖后, 右鍵選擇粘貼命令時(shí), 命令為灰色不可使用, 證明截圖失效. 圖6為對(duì)AutoCAD復(fù)制粘貼命令攔截前后的使用效果對(duì)比圖. 圖6左側(cè)是復(fù)制圓形對(duì)象后執(zhí)行粘貼操作的效果圖, 右側(cè)是執(zhí)行攔截操作后粘貼時(shí)的效果圖. 對(duì)比兩幅圖可以發(fā)現(xiàn), 攔截后再執(zhí)行粘貼操作, 圓形對(duì)象已被清空, 證明復(fù)制粘貼操作已失效.
隨著電子圖紙的廣泛使用, 工程圖紙的安全問(wèn)題受到更廣泛的關(guān)注. 本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于ObjectARX的圖紙操作安全管理系統(tǒng), 主要是保護(hù)已打開(kāi)圖紙的信息安全. 本系統(tǒng)利用ObjectARX技術(shù)對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā), 主要使用ARX反應(yīng)器類(lèi)攔截AutoCAD的打印和保存消息, 鉤子技術(shù)實(shí)現(xiàn)復(fù)制粘貼和截屏控制. 實(shí)際運(yùn)行結(jié)果表明, 本系統(tǒng)根據(jù)用戶(hù)操作權(quán)限既可以限制用戶(hù)對(duì)AutoCAD的操作, 又可以很好的控制PrtSc截屏鍵和常用截圖軟件工具的使用, 達(dá)到了圖紙操作安全管理的目的.

圖6 復(fù)制粘貼操作攔截效果圖