Posted by JimmySkull on Fri 20 Jun 15:08 (modification of post by JimmySkull view diff)
report abuse | download | new post
- // Usando o Registro do Windows
- // http://0x1f.blogspot.com/
- uses Registry; // Adicionar a unit Registry em uses
- // Primeira dica:
- procedure TForm1.Button1Click(Sender: TObject);
- var
- Reg: TRegistry;
- begin
- Reg := TRegistry.Create;
- with Reg do
- try
- RootKey := HKEY_CLASSES_ROOT;
- OpenKey('\MeuPrograma', True);
- WriteString('', 'Arquivo do meu programa'); //Nome dado ao arquivo de sua aplicação. "Ex: Imagem Gif".
- CloseKey;
- OpenKey('MeuPrograma\DefaultIcon', True);
- // O primeiro parâmetro da linha de comando abaixo, é para escrever uma string vazia.
- // E o último parâmetro é para colocar o ícone da sua aplicação nos arquivos que serão abertos por ela.
- WriteString('', Application.ExeName + ',0');
- CloseKey;
- OpenKey('MeuPrograma\Shell\Open\Command', True);
- WriteString('', Application.ExeName + ' "%1"');
- CloseKey;
- RootKey := HKEY_CLASSES_ROOT;
- OpenKey('\.ext', True); // Substitua o "ext" pela extensão que você deseja utilizar.
- WriteString('', 'MeuPrograma');
- CloseKey;
- finally
- Reg.CloseKey;
- Reg.Free;
- end;
- end;
- { Segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:}
- procedure Button1.Click(Sender: TObject);
- var
- Reg: TRegistry;
- begin
- Reg := TRegistry.Create;
- with Reg do begin
- RootKey := HKEY_LOCAL_MACHINE;
- Openkey('Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List', False);
- WriteString('File0', 'Natureza.htm');
- WriteString('File1', 'Dia Claro.htm');
- CloseKey;
- end;
- 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.
- Agora no código abaixo veremos como ler um valor de um registro qualquer: }
- procedure Button1.Click(Sender: TObject);
- var
- Reg: TRegistry;
- S: string;
- begin
- Reg := TRegistry.Create;
- with Reg do begin
- RootKey := HKEY_LOCAL_MACHINE;
- Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\', False);
- S := ReadString('version');
- CloseKey;
- end;
- Edit1.Text := S;
- 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.
- 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.}
- procedure Button1.Click(Sender: TObject);
- var Reg: Tregistry;
- begin
- Reg := TRegistry.Create;
- with Reg do begin
- RootKey := HKEY_LOCAL_MACHINE;
- Openkey('\MICROSOFT\WINDOWS\CURRENTVERSION\RUN', False);
- WriteString('MeuPrograma', PChar(Application.ExeName));
- CloseKey;
- end;
- end;
- //Este exemplo mostra como funciona como podemos gravar dados do registro do Windows utilizando o Delphi 2 ou 3
- procedure Form1.GravarRegistro;
- const
- Raiz : string = 'Software\Programa';
- var
- Registro : TRegistry;
- begin
- Registro := TRegistry.Create; // Chama o construtor do objeto
- { Abre a chave (se o 2°. Parâmetro for True, ele cria a chave caso ela ainda não exista. }
- Registro.OpenKey(Raiz, True);
- // Grava as informações do form
- Registro.WriteInteger('Largura', Width);
- Registro.WriteInteger('Altura', Height);
- Registro.WriteInteger('Esquerda', Left);
- Registro.WriteInteger('Topo', Top);
- // Grava as informações das caixas Abrir e Salvar.
- Registro.WriteString('Abrir Inicial', OpenDialog1.InitialDir);
- Registro.WriteString('Salvar Inicial', SaveDialog1.InitialDir);
- // Fecha a chave e o objeto
- Registro.CloseKey;
- Registro.Free;
- end;
- {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.
- Os métodos WriteInteger e WriteString são utilizados para gravar valores inteiros e caracteres, respectivamente. A sintaxe básica é:
- Registro.WriteString (NomeDoValor, Conteúdo);
- {onde NomeDoValor é o nome que você vai dar ao valor dentro da chave, e Conteúdo é o conteúdo desse valor.
- Para se escrever dados de outros tipos, utilize as funções:
- }
- WriteBool(NomeDoValor, Conteudo); // Boolean
- WriteBinaryData(NomeDoValor, Conteudo); // Valor Binário
- WriteCurrency(NomeDoValor, Conteudo); // Currency
- WriteDate(NomeDoValor, Conteudo); // TDateTime
- WriteDateTime(NomeDoValor, Conteudo); // TDateTime
- WriteFloat(NomeDoValor, Conteudo); // Float (Real)
- WriteInteger(NomeDoValor, Conteudo); // Integer
- WriteString(NomeDoValor, Conteudo); // string
- WriteTime(NomeDoValor, Conteudo); // TDateTime { Este exemplo mostra como funciona como podemos ler dados do registro do Windows utilizando o Delphi 2 ou 3
- procedure Form1.LerRegistro;
- const Raiz: string = 'Software\Programa';
- var Registro: TRegistry;
- begin
- Registro := TRegistry.Create; // Chama o construtor do objeto
- with Registro do begin
- if OpenKey(Raiz, False) then // Somente abre se a chave existir
- // Envia as informações ao form, vendo se os valores existem, primeiramente...
- if ValueExists('Largura') then Width := ReadInteger('Largura');
- if ValueExists('Altura') then Height := ReadInteger('Altura');
- if ValueExists('Esquerda') then Left := ReadInteger('Esquerda');
- if ValueExists('Topo') then Top := ReadInteger('Topo');
- // Envia as informações para as caixas Abrir e Salvar.
- OpenDialog1.InitialDir := ReadString('Abrir Inicial');
- SaveDialog1.InitialDir := ReadString('Salvar Inicial');
- // Fecha a chave e o objeto
- Registro.CloseKey;
- Registro.Free;
- 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.
- 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.
- Os correspondentes dos outros tipos são: }
- ReadBool(NomeDoValor): Boolean;
- ReadBinaryData(NomeDoValor; var Buffer; TamBuffer: Integer): Integer;
- ReadCurrency(NomeDoValor): Currency;
- ReadDate(NomeDoValor): TDateTime;
- ReadDateTime(NomeDoValor): TDateTime;
- ReadFloat(NomeDoValor): Double;
- ReadInteger(NomeDoValor): Integer;
- ReadString(NomeDoValor): string;
- ReadTime(NomeDoValor): TDateTime;
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.