Guest
Public paste!

JimmySkull

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