Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ø Rodrigo Ø

Manipulação de Registro

Recommended Posts

tem umas aqui...

 

{ Usando o Registro do Windows  Nesta matéria veremos como trabalhar com o registro do windows utilizando suas "Api's". Esta matéria possui algumas técnicas que tratam o registro do windows. Veja as dicas desta matéria:Como definir, que uma certa extensão de arquivo seja aberta pelo seu programa.Como escrever e ler algum valor no registro do windows.E o que escrever lá, para que sua aplicação seja inicializada junto com o windows.Vejamos então a primeira dica:}Uses  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses... procedure TForm1.Button1Click(Sender: TObject);Var  Reg : TRegistry;Begin  Reg := TRegistry.Create;  try  with Reg do  begin  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;  end;  finally  Reg.CloseKey;  Reg.Free;end;End;  Acredito que você tenha conseguido aplicar esta técnica que lhe pode ser bastante útil. Vamos então ver a segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:Uses  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses... 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;  No caso acima nós exemplificamos o que é escrever no registro, Neste exemplo nós trocamos de ordem os papeis 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:Uses  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses... procedure button1.click(sender: Tobject);var  Reg: Tregistry;  S: String;begin  Reg:=Tregistry.create;  with Reg do  begin  rootkey:=HKEY_LOCAL_MACHINE;  OpenkeyReadOnly('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\',false);  s:=readstring('version');  closekey;  end;  edit.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.Uses  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses... 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;{  Com mais essa dica, finalizo a nossa matéria que ensina a trabalhar com o registro do windows. Espero que você tenha gostado e que lhe seja bastante útil. Por Marco Antoniomarco@clubedelphi.com.br}

e tem mais um....

 

continuando

 

(ps.: sei que tem coisa repetida, mas to soh dando ctrl+c ctrl+v)

 

Usando o Registro do WindowsComo usar o Registro do Windows no seu programa DelphiOs programas possuem cada vez mais opções. E você precisa gravar essas opções em algum lugar. A primeira coisa que lhe vem à cabeça é a criação de um arquivo INI, como no Windows 3.x. O Delphi possui o objeto TIniFile, que ajuda a ler e gravar dados nesse arquivo. A não ser que esteja usando o Windows 3.x, essa técnica deve ser repensada. No Windows 95 foi criado o Registro do Windows (Windows Registry), cuja finalidade é substituir os vários arquivos INI espalhados pelo Winchester e encapsulá-los em um local centralizado.Para você ter uma idéia de como ele funciona, dê uma olhada no Editor de Registro, que vem na instalação padrão do Windows (vá em Iniciar|Executar e digite RegEdit). O programa separa as opções de registro em "pastas", conhecidas aqui como "chaves". Essas chaves contém dados, chamados de "valores". Esses valores possuem um nome, um tipo e um valor específico.O Delphi encapsula o Registro do Windows através o objeto TRegistry. É através dessa classe que você irá acessar dados do registro.Para você entender melhor como funciona o objeto, vamos explicar primeiro como funciona o Registro do Windows:As principais chaves "raízes" são: HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER. Todas as informações sobre os programas ficam nessas chaves (as outras normalmente possuem informações sobre o Windows).O InstallShield, por exemplo, instala as informações sobre o nome de usuário e empresa do seu programa em HKEY_LOCAL_MACHINE\SOFTWARE\Nome da Sua Empresa\Nome Do Programa\Versão, com os valores Company e Name (Empresa e Nome do Usuário).Os programas, por sua vez, usam a chave HKEY_CURRENT_USER\Software para armazenar informações de seus programas. E é nessa chave que você deve inserir sua sub-chave e colocar lá as informações necessárias.Um pequeno exemplo de como utilizar o registro do Windows. Suponhamos que o programa necessite gravar a posição da janela, o seu tamanho e o diretório inicial dos diálogos Abrir e Salvar.Após a criação do objeto, devemos informar qual chave devemos utilizar, utilizando o método OpenKey (Chave, PodeCriar); onde Chave é o nome da sub-chave e PodeCriar é um valor booleano que permite (ou não) criar a chave caso a mesma não exista.{ Este exemplo mostra como funciona como podemos gravar dados do registro do Windows utilizando o Delphi 2 ou 3 }procedure frmMain.GravarRegistro;constRaiz : String = 'Software\Programa';varRegistro : TRegistry;begin// Chama o construtor do objetoRegistro := TRegistry.Create;{ 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 formRegistro.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 objetoRegistro.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, Conteúdo); // BooleanWriteBinaryData (NomeDoValor, Conteúdo); // Valor BinárioWriteCurrency (NomeDoValor, Conteúdo); // CurrencyWriteDate (NomeDoValor, Conteúdo); // TDateTimeWriteDateTime (NomeDoValor, Conteúdo); // TDateTimeWriteFloat (NomeDoValor, Conteúdo); // Float (Real)WriteInteger (NomeDoValor, Conteúdo); // IntegerWriteString (NomeDoValor, Conteúdo); // StringWriteTime (NomeDoValor, Conteúdo); // TDateTime{ Este exemplo mostra como funciona como podemos ler dados do registro do Windows utilizando o Delphi 2 ou 3 }procedure frmMain.LerRegistro;constRaiz : String = ‘Software\Programa';varRegistro : TRegistry;begin// Chama o construtor do objetoRegistro := TRegistry.Create;with Registro dobegin// Somente abre se a chave existirif OpenKey (Raiz, False) then// Envia as informações ao form, vendo se os valores existem, primeiramente...if ValueExists ('Largura') thenWidth := ReadInteger ('Largura');if ValueExists ('Altura') thenHeight := ReadInteger ('Altura');if ValueExists ('Esquerda') thenLeft := ReadInteger ('Esquerda');if ValueExists ('Topo') thenTop := 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 objetoRegistro.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

espero ter ajudado,

 

[]'s e boa programação

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.