Guest
Public paste!

JimmySkull

By: a guest | Jun 20th, 2008 | Syntax: Delphi | Size: 6.76 KB | Hits: 421 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. // Usando o Registro do Windows
  2. // http://0x1f.blogspot.com/
  3.  
  4. uses Registry; // Adicionar a unit Registry em uses
  5.  
  6. // Primeira dica:
  7. procedure TForm1.Button1Click(Sender: TObject);
  8. var
  9.   Reg: TRegistry;
  10. begin
  11.   Reg := TRegistry.Create;
  12.   with Reg do
  13.   try
  14.     RootKey := HKEY_CLASSES_ROOT;
  15.     OpenKey('\MeuPrograma', True);
  16.     WriteString('', 'Arquivo do meu programa'); //Nome dado ao arquivo de sua aplicação. "Ex: Imagem Gif".
  17.     CloseKey;
  18.     OpenKey('MeuPrograma\DefaultIcon', True);
  19.     // O primeiro parâmetro da linha de comando abaixo, é para escrever uma string vazia.
  20.     // E o último parâmetro é para colocar o ícone da sua aplicação nos arquivos que serão abertos por ela.
  21.     WriteString('', Application.ExeName + ',0');
  22.     CloseKey;
  23.     OpenKey('MeuPrograma\Shell\Open\Command', True);
  24.     WriteString('', Application.ExeName + ' "%1"');
  25.     CloseKey;
  26.     RootKey := HKEY_CLASSES_ROOT;
  27.     OpenKey('\.ext', True); // Substitua o "ext" pela extensão que você deseja utilizar.
  28.     WriteString('', 'MeuPrograma');
  29.     CloseKey;
  30.   finally
  31.     Reg.CloseKey;
  32.     Reg.Free;
  33.   end;
  34. end;
  35.  
  36. { Segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:}
  37. procedure Button1.Click(Sender: TObject);
  38. var
  39.   Reg: TRegistry;
  40. begin
  41.   Reg := TRegistry.Create;
  42.   with Reg do begin
  43.     RootKey := HKEY_LOCAL_MACHINE;
  44.     Openkey('Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List', False);
  45.     WriteString('File0', 'Natureza.htm');
  46.     WriteString('File1', 'Dia Claro.htm');
  47.     CloseKey;
  48.   end;
  49. end; { Neste exemplo nós trocamos de ordem os papéis de carta do Microsoft Outlook Explorer, embora você possa alterar qualquer registro já existente no "regedit". Se o que você que é incluir um registro e não editar, como nós fizemos, basta que no primeiro parâmetro da linha de comando "writestring", você coloque um nome para o seu registro, que não exista nesta pasta.
  50. Agora no código abaixo veremos como ler um valor de um registro qualquer: }
  51.  
  52. procedure Button1.Click(Sender: TObject);
  53. var
  54.   Reg: TRegistry;
  55.   S: string;
  56. begin
  57.   Reg := TRegistry.Create;
  58.   with Reg do begin
  59.     RootKey := HKEY_LOCAL_MACHINE;
  60.     Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\', False);
  61.     S := ReadString('version');
  62.     CloseKey;
  63.   end;
  64.   Edit1.Text := S;
  65. end; { Neste caso nós pegamos o registro "version", que significa a versão do windows, colocamos o seu valor na variável "s" e depois à "jogamos" num "edit" qualquer, apenas para que possamos visualizá-la.
  66. Agora que você já sabe como escrever no registro do windows, veremos o que precisamos escrever, para colocar a nossa aplicação para ser inicializada junto com o windows.}
  67.  
  68. procedure Button1.Click(Sender: TObject);
  69. var Reg: Tregistry;
  70. begin
  71.   Reg := TRegistry.Create;
  72.   with Reg do begin
  73.     RootKey := HKEY_LOCAL_MACHINE;
  74.     Openkey('\MICROSOFT\WINDOWS\CURRENTVERSION\RUN', False);
  75.     WriteString('MeuPrograma', PChar(Application.ExeName));
  76.     CloseKey;
  77.   end;
  78. end;
  79.  
  80. //Este exemplo mostra como funciona como podemos gravar dados do registro do Windows utilizando o Delphi 2 ou 3
  81. procedure Form1.GravarRegistro;
  82. const
  83.   Raiz : string = 'Software\Programa';
  84. var
  85.   Registro : TRegistry;
  86. begin
  87.   Registro := TRegistry.Create; // Chama o construtor do objeto
  88.   { Abre a chave (se o 2°. Parâmetro for True, ele cria a chave caso ela ainda não exista. }
  89.   Registro.OpenKey(Raiz, True);
  90.   // Grava as informações do form
  91.   Registro.WriteInteger('Largura', Width);
  92.   Registro.WriteInteger('Altura', Height);
  93.   Registro.WriteInteger('Esquerda', Left);
  94.   Registro.WriteInteger('Topo', Top);
  95.   // Grava as informações das caixas Abrir e Salvar.
  96.   Registro.WriteString('Abrir Inicial', OpenDialog1.InitialDir);
  97.   Registro.WriteString('Salvar Inicial', SaveDialog1.InitialDir);
  98.   // Fecha a chave e o objeto
  99.   Registro.CloseKey;
  100.   Registro.Free;
  101. end;
  102.  
  103. {Após a criação do objeto, deve-se escolher uma chave para armazenas os valores. No caso, "Software\Programa", cuja chave raiz é HKEY_CURRENT_USER. Note que é para se separar as chaves das sub-chaves utiliza-se o caracter "\", tal como nos diretórios do DOS.
  104. Os métodos WriteInteger e WriteString são utilizados para gravar valores inteiros e caracteres, respectivamente. A sintaxe básica é:
  105. Registro.WriteString (NomeDoValor, Conteúdo);
  106. {onde NomeDoValor é o nome que você vai dar ao valor dentro da chave, e Conteúdo é o conteúdo desse valor.
  107. Para se escrever dados de outros tipos, utilize as funções:
  108. }
  109. WriteBool(NomeDoValor, Conteudo);       // Boolean
  110. WriteBinaryData(NomeDoValor, Conteudo); // Valor Binário
  111. WriteCurrency(NomeDoValor, Conteudo);   // Currency
  112. WriteDate(NomeDoValor, Conteudo);       // TDateTime
  113. WriteDateTime(NomeDoValor, Conteudo);   // TDateTime
  114. WriteFloat(NomeDoValor, Conteudo);      // Float (Real)
  115. WriteInteger(NomeDoValor, Conteudo);    // Integer
  116. WriteString(NomeDoValor, Conteudo);     // string
  117. WriteTime(NomeDoValor, Conteudo);       // TDateTime { Este exemplo mostra como funciona como podemos ler dados do registro do Windows utilizando o Delphi 2 ou 3
  118.  
  119. procedure Form1.LerRegistro;
  120. const Raiz: string = 'Software\Programa';
  121. var Registro: TRegistry;
  122. begin
  123.   Registro := TRegistry.Create;         // Chama o construtor do objeto
  124.   with Registro do begin
  125.     if OpenKey(Raiz, False) then        // Somente abre se a chave existir
  126.       // Envia as informações ao form, vendo se os valores existem, primeiramente...
  127.       if ValueExists('Largura') then Width := ReadInteger('Largura');
  128.     if ValueExists('Altura') then Height := ReadInteger('Altura');
  129.     if ValueExists('Esquerda') then Left := ReadInteger('Esquerda');
  130.     if ValueExists('Topo') then Top := ReadInteger('Topo');
  131.     // Envia as informações para as caixas Abrir e Salvar.
  132.     OpenDialog1.InitialDir := ReadString('Abrir Inicial');
  133.     SaveDialog1.InitialDir := ReadString('Salvar Inicial');
  134.     // Fecha a chave e o objeto
  135.     Registro.CloseKey;
  136.     Registro.Free;
  137.   end; {Sempre use CloseKey quando não for precisar do Registro. Isso permite que as opções sejam gravadas permanentemente, evitando que qualquer problema que o computador tenha afete seu programa.
  138.   Os métodos ReadInteger e ReadString funcionam praticamente da mesma maneira que seus correspondentes de escrita. A diferença é que ao invés de passar o valor Conteúdo, eles retornam o valor armazenado.
  139.  
  140.   Os correspondentes dos outros tipos são:                                  }  
  141.   ReadBool(NomeDoValor): Boolean;
  142.   ReadBinaryData(NomeDoValor; var Buffer; TamBuffer: Integer): Integer;
  143.   ReadCurrency(NomeDoValor): Currency;
  144.   ReadDate(NomeDoValor): TDateTime;
  145.   ReadDateTime(NomeDoValor): TDateTime;
  146.   ReadFloat(NomeDoValor): Double;
  147.   ReadInteger(NomeDoValor): Integer;
  148.   ReadString(NomeDoValor): string;
  149.   ReadTime(NomeDoValor): TDateTime;