二 編程思想
(一)注冊表中隱藏驅動器的原理
在DOSWINX/NT中驅動器是用字母AZ表示其中A和B表示軟盤驅動器C到Z則表示硬盤或網絡驅動器也就是說總共可以支持個驅動器
在注冊表的
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorer下新建或修改DWORD類型的NoDrives的值可以隱藏或顯示驅動器圖標從而達到本程序的目的
NoDrives的取值特點
NoDrives是字節共位的鍵值從第位到第位的取值就分別控制著驅動器A到Z的狀態若第位取值為則將隱藏驅動器A若第位為則顯示驅動器B如此類推即可如圖三所示
圖三
(二)DelPhi中對注冊表的讀寫過程簡介
在DelPhi中為程序員提供了一個Tregistry類它提供了眾多豐富的方法來完成對注冊表的修改限於篇幅下面只針對本實例中所用到的讀寫注冊表的方法進行簡介
()打開一個鍵OpenKey()
function OpenKey(const Key: String; CanCreate: Boolean): Boolean;
()向一個鍵中寫入整型數據WriteInteger()
procedure WriteInteger(const Name: string; Value: Integer);
()讀取一個鍵中某個具體的整型數值ReadInteger()
function ReadInteger(const Name: String): Integer;
()判斷某一鍵值是否存在ValueExists()
function ValueExists(const Name: string): Boolean;
()關閉一個鍵CloseKey
procedure CloseKey;
(三)設計方法(分為注冊表的讀寫兩部分)
隱藏按鈕中代碼的設計思想(注冊表的寫操作)
()當用戶單擊隱藏按鈕時就利用OpenKey方法打開注冊表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorer判斷其下是否存在NoDrives鍵若此鍵不存在就自動建立它然後根據用戶選擇的選擇修改NoDrives的值用戶的選擇和NoDrives的值對應關系如下
用戶選擇A驅則NoDrives的值為
用戶選擇B驅則NoDrives的值為
用戶同時選擇A驅和B驅則NoDrives的值為
()根據用戶的選擇利用方法WriteInteger()將NoDrives的值寫入注冊表
()利用CloseKey關閉打開的主鍵
(注冊表的讀操作)為了實現程序啟動時能自動判斷系統驅動器的當前狀態還要在Form的FormCreate()方法中利用ReadInteger()和ValueExists()讀取注冊表中NoDrives的值然後根據讀出的NoDrives的值設置窗體上兩個復選的選擇狀態NoDrives的值與復選框的狀態對應關系如下
NoDrives的值為則窗體上A驅復選框處於選中狀態
NoDrives的值為則窗體上B驅復選框處於選中狀態
NoDrives的值為則窗體上A驅和B驅復選框同時處於選中狀態
From:http://tw.wingwit.com/Article/program/Delphi/201311/8548.html