Delphi:注册表构件的应用

发布时间:2008-08-22 20:24:54 阅读次数:

在Delphi3.0及以上版本中,提供了一个构件Tregistry。在程序中可以利用它来实现对WIN 95/98/NT注册表的操作,可以很方便地在注册表中增加、修改和删除键值.这样可以在程序中完成一些特殊的功能。

  TRegistry常用的属性和方法有(具体作用和用法请参考Delphi帮助):

   RootKey、CreateKey、OpenKey、CloseKey、DeleteKey、

   ReadXXXX、WriteXXXX(XXXX表示数据类型如String、Integer等)

  我们用到的属性和方法有:

   RootKey:注册表的根键名(如HKEY_LOCAL_MACHINE等)

   OpenKey( KeyName:string; CanCreate:boolean ):

   使当前键为KeyName,CanCreate表示当指定的键不存在时是否创建,True表示创建

   SetKey( KeyName,KeyValue : string ):使键KeyName的值为KeyValue


  应用之一:让自己的程序随WIN95/98/NT的启动而运行


  当然,你可以在"启动"程序组中加入程序的快捷方式,但这样做好像不大明智,因为大多数程序在安装时不会这样做,而通过在注册表增加键值,让WIN 95/98/NT在启动时运行自己的程序.如果打开注册表,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,就会发

  现这个秘密了,原来许多自动运行的程序都在这里.你也可以在这里增加一个键,让你的程序也随着WIN95/98/NT的启动而自己运行,成为WINDOWS下的TSR程序.实现方法如下:

  首先,在Uses中加上Registry单元。然后,写下面代码.

  { 将程序strExeFileName置为自动启动 }

  function StartUpMyProgram( strPrompt,strExeFileName : string ) : boolean;

  var

  registerTemp : TRegistry;

  begin

  registerTemp := TRegistry.Create; //建立一个Registry实例

  with registerTemp do

   begin

   RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE

   //找到Software\Microsoft\Windows\CurrentVersion\Run

   if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then

   //写入自己程序的快捷方式信息

   begin

   WriteString( strPrompt, strExeFileName );

   result := true;

   end

   else result := false;

   //善后处理

   CloseKey;

   Free;

   end;

  end;

  { 调用StartUpMyProgram,使Delphi随WINDOWS启动而自动运行 }

  procedure TForm1.Button1Click(Sender: TObject);

  begin

   memo1.lines.add('开始');

   if StartUpMyProgram('delphi','C:\Program Files\borland\delphi3\bin\delphi32.exe') then

   memo1.lines.add('成功')

   else

   memo1.lines.add('失败')

  end;


  应用之二:实现文件关联


  当MS WORD安装在你的系统中时,它会把.DOC文件与自己关联,当你双击一个DOC文件,就会启动MS WORD,打开你指定的DOC文件.你也可以把一个文件类型与一个程序关联起来,其秘密还是在注册表中.如果打开注册表,找到HKEY_CLASSES_ROOT,就会发现这里已经有很多文件类型。你也可以在这里增加一个键,建立自己的文件关联.

  建立文件关联,一般应有两个步骤:

  (1)根据文件类型的扩展名,指定对应的键名(如doc文件对应的键为doc_auto_file),该键及其子键的值,将定义该类型的文件的类型说明和操作(如打开、编辑)说明。

  (2)在指定的键名下,建立子键,指明文件类型说明和操作对应的程序信息

  例如,我们可以为.DBF文件建立文件关联,其文件类型说明为"xBase数据表",使其打开(Open)文件的操作对应程序C:\Program Files\Borland\DBD\DBD32.EXE.首先,应在注册表的根键HKEY_CLASSES_ROOT下建立一个键,键名为.DBF,默认值为DBF_Auto_File,表示DBF类型文件的关联操作信息记录在键HKEY_CLASSES_ROOT\DBF_Auto_File下;然后,建立键HKEY_CLASSES_ROOT\DBF_Auto_File,并设其默认值为"xBase数据表",表示文件类型说明;再建立键HKEY_CLASSES_ROOT\DBF_Auto_File\Shell\open\command,设置其默认值为C:\Program Files\Borland\DBD\DBD32.EXE %1(其中"%1"为命令行参数),表示打开操作对应的程序信息。

  具体实现如下:

  同样,在Uses中加上Registry单元,然后,写下面代码.

  { 将文件类型strFileExtension与程序strExeFileName相关联,strDiscription为文件类型说明 }

  function AssignToProgram( strFileExtension,strDiscription,strExeFileName : string ) : boolean;

  var

  registerTemp : TRegistry;

  begin

  registerTemp := TRegistry.Create; //建立一个Registry实例

  with registerTemp do

   begin

   RootKey:=HKEY_CLASSES_ROOT;//设置根键值为HKEY_CLASSES_ROOT