熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi編程訪問注冊表(三)

2013-11-11 21:07:04  來源: Delphi編程 

  三設計過程

  (一)界面的建立

  啟動DelPhi新建一個窗體Form

  在窗體Form上建立三個TbitBtn按鈕兩個復選框TcheckBox一個GroupBox調整各對象的位置使其與圖一所示

  (二) 代碼編輯

  要使程序能夠正確訪問注冊表必須在單元文件unit Unit的interface的 uses中增加注冊表類Registry此句千萬不能少

  按鈕Bit_all(全選按鈕)中的代碼如下

  procedure TFormBit_allClick(Sender: TObject);

  begin

  A_checkChecked:=true;

  B_checkChecked:=true;

  end; //當用戶單擊全選按鈕時將兩個復選框都設為選中狀態

  按鈕Bit_cancel(取消按鈕)中的代碼如下

  procedure TFormBit_cancelClick(Sender: TObject);

  begin

  A_checkChecked:=false;

  B_checkChecked:=false;

  end; //當用戶單擊取消按鈕時則取消復選框的選中狀態

  按鈕Bit_hide(隱藏按鈕)中的代碼如下(主要程序代碼均放在這裡當用戶按此按鈕時即完成隱藏驅動器的目的)

  procedure TFormBit_hideClick(Sender: TObject);

  var myreg:TRegistry; // 定義Tregistry型變量myreg

  temptempmyval:integer;//temp和temp分別保存復選框A_check和B_check的值

  //myval用於保存寫入注冊表的最終值它等於temp和temp的和

begin

  temp:=;

  temp:=;

  myval:=; //初始三個變量

  myreg:=TRegistryCreate;//利用Tregistry的Create方法創建一個實例myreg

  with myreg do

  begin

  rootkey:=HKEY_LOCAL_MACHINE;//確定打開注冊表的主鍵

  if openkey(SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorertrue) then

  begin //打開NoDrives所在的鍵

  case formA_CheckChecked of

  true:

  temp:=;//當用戶點擊A驅復選框時將臨時變量temp

  end;

  case formB_CheckChecked of

  true:

  temp:=; //當用戶點擊B驅復選框時將臨時變量temp

  end;

  myval:=temp+temp;//將臨時變量temp和temp中的值求和賦給myval因為用戶可

  //能選中兩個復選框此時寫入注冊表的值應為+所以用temp與temp的和賦給myval

  WriteInteger(NoDrivesmyval);//利用函數創建一個Dword值NoDrives其值為myval

  //並寫入注冊表

  myregCloseKey//關閉前面打開的主鍵完成隱藏操作

  myregFree;

  end;

  end;

  end;

  為了實現程序啟動時能自動判斷系統驅動器的當前狀態還要在Form的FormCreate()方法中利用ReadInteger()和ValueExists()讀取注冊表中NoDrives的值然後根據讀出的NoDrives的值設置窗體上兩個復選的選擇狀態程序如下

  procedure TFormFormCreate(Sender: TObject);

  var myreg:TRegistry;

  begin

  myreg:=TRegistryCreate;

  with myreg do

  begin

  rootkey:=HKEY_LOCAL_MACHINE;

  if openkey(SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorertrue) and ValueExists(NoDrives) then //如果打開鍵成功且NoDrives存在則進行下面操作

  begin

  if readinteger(NoDrives)= then //讀取NoDrives的值若為則將A_check設為選中

  A_checkChecked:=true;

  if readinteger(NoDrives)= then//讀取NoDrives的值若為則將B_check設為選中

  B_checkChecked:=true;

  if readinteger(NoDrives)= then//讀取NoDrives的值若為則將兩個復選框均選中

begin

  A_checkChecked:=true;

  B_checkChecked:=true;

  end;

  myregCloseKey;

  myregFree;

  end;

  end;

  end;

  將以上程序保存為Hide_drive然後編譯成可執行程序Hide_Driveexe即可此程序在Win和Delphi中運行通過操作時隱藏了驅動器請重新注銷windows即可看到實際效果

  四結束語

  在程序中訪問注冊表的基本方法是打開注冊表讀寫注冊表關閉打開的主鍵此實例程序本身雖然比較簡單但其訪問注冊表的方法卻比較通用你可以將此方法靈活運用到其他程序語言中設計出滿足要求的實用程序其實在DelPhi中Tregistry類為我們提供了更多更豐富的方法來操作注冊表但操作的方法仍然是一樣的希望通過本文的實例能為廣大Delphi愛好者或程序設計愛好者提供一點幫助

  附為了使大家能對此程序有一個完整的了解下面附上源程序請大家指教!

  unit Unit;
  interface
  uses
  Windows Messages SysUtils Classes Graphics Controls Forms Dialogs
  StdCtrls ButtonsRegistry; // 此處加上Registry才能使程序訪問注冊表
  type
  TForm = class(TForm)
  A_Check: TCheckBox;
  B_Check: TCheckBox;
  Bit_all: TBitBtn;
  Bit_cancel: TBitBtn;
  Bit_hide: TBitBtn;
  GroupBox: TGroupBox;
  procedure Bit_allClick(Sender: TObject);
  procedure Bit_cancelClick(Sender: TObject);
  procedure Bit_hideClick(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  var
  Form: TForm;
  implementation
  {$R *DFM}
  procedure TFormBit_allClick(Sender: TObject);
  begin
  a_checkChecked:=true;
  b_checkChecked:=true;
  end;
  procedure TFormBit_cancelClick(Sender: TObject);
  begin
  a_checkChecked:=false;
  b_checkChecked:=false;
  end;
  procedure TFormBit_hideClick(Sender: TObject);
  var myreg:TRegistry;
  temptempmyval:integer;
  begin
  temp:=;
  temp:=;
  myval:=;
  myreg:=TRegistryCreate;
  with myreg do
  begin
                         rootkey:=HKEY_LOCAL_MACHINE;
  if openkey(SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorertrue) then
  begin
  case formA_CheckChecked of
  true:
  temp:=;
  end;
  case formB_CheckChecked of
  true:
  temp:=;
  end;
  myval:=temp+temp;
  WriteInteger(NoDrivesmyval);
  myregCloseKey;
  myregFree;
  end;
  end;
  end;
  procedure TFormFormCreate(Sender: TObject);
  var myreg:TRegistry;
  begin
  myreg:=TRegistryCreate;
  with myreg do
  begin
  rootkey:=HKEY_LOCAL_MACHINE;
  if openkey(SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorertrue) and ValueExists(NoDrives) then
  begin
  if readinteger(NoDrives)= then
  A_checkChecked:=true;
  if readinteger(NoDrives)= then
  B_checkChecked:=true;
  if readinteger(NoDrives)= then
  begin
  A_checkChecked:=true;
  B_checkChecked:=true;
  end;
  myregCloseKey;
  myregFree;
  end;
  end;
  end;
  end


From:http://tw.wingwit.com/Article/program/Delphi/201311/8547.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.