ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como como uma chave no regedit?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Qui Jun 27, 2013 10:15 am    Assunto: Como como uma chave no regedit? Responder com Citação

Bom dia!

Preciso fazer exatamente isso:

Código:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\WinRAR.ZIP\shell\Focus Backup]
"MUIVerb"="Restaurar backup aqui"

[HKEY_CLASSES_ROOT\WinRAR.ZIP\shell\Focus Backup\Command]
@="\"C:\\Users\\Focus\\Documents\\Projetos\\Backup e Restore\\Novo\\Focus_Backup.exe\" \"%1\""


Daí fiz isso, no Delphi:

Código:
  SalvaStringNoRegistro('WinRAR.ZIP\shell\Focus Backup', 'MUIVerb',
    'Focus Restaurar backup aqui', HKEY_CLASSES_ROOT);

  SalvaStringNoRegistro('WinRAR.ZIP\shell\Focus Backup\Command', '@',
    '\"' + DiretorioDoExecutavel + NomeDoExecutavel + '" "%1"',
    HKEY_CLASSES_ROOT);


Essa função, a SalvaStringNoRegistro, é assim:

Código:
procedure SalvaStringNoRegistro(Chave, NomeDoValor, Valor:String; srRootKey:HKEY=HKEY_LOCAL_MACHINE);
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
    begin
      RootKey := srRootKey;
      OpenKey(Chave, true);
      try
        WriteString (NomeDoValor, Valor);
      except
        ApagaValorDoRegistro(srRootKey, Chave, NomeDoValor);
        WriteString (NomeDoValor, Valor);
      end;
      CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;



O resultado, porém, sai com uma aspa no @, bagunçando o inicio da segunda parte da string, o que, por si só, já bagunça o arquivo. Exportei o que o meu programa gera e fica assim:

Código:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\WinRAR.ZIP\shell\Focus Backup]
"MUIVerb"="Focus Restaurar backup aqui"

[HKEY_CLASSES_ROOT\WinRAR.ZIP\shell\Focus Backup\Command]
"@"="\\\"C:\\Users\\Focus\\Documents\\Projetos\\Backup e Restore\\Novo\\Focus_Backup.exe\" \"%1\""


O que eu faço? Obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
cobaiaoo
Colaborador
Colaborador


Registrado: Domingo, 1 de Abril de 2012
Mensagens: 1283

MensagemEnviada: Qui Jun 27, 2013 10:22 am    Assunto: Re: Como como uma chave no regedit? Responder com Citação

amigo o q vc esta tentando fazer?
pelo q vi vc esta tentando usar o WINRAR so n entendi pra q

caso a necessiade for trabalhar com ZIP/RAR vc podia tentar usar o componente TPAbbrevia procure por ele em

http://www.activedelphi.com.br/forum/viewtopic.php?t=78274&start=0
_________________
I João 4:8 - "Aquele que não ama não conhece a Deus; porque Deus é amor."
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Qui Jun 27, 2013 10:24 am    Assunto: Re: Como como uma chave no regedit? Responder com Citação

cobaiaoo escreveu:
amigo o q vc esta tentando fazer?
pelo q vi vc esta tentando usar o WINRAR so n entendi pra q

caso a necessiade for trabalhar com ZIP/RAR vc podia tentar usar o componente TPAbbrevia procure por ele em

http://www.activedelphi.com.br/forum/viewtopic.php?t=78274&start=0


Eu só quero que os arquivos de extensão zip, que abrem com o Winrar, tenham suporte ao meu programa. O regedit funcional faz exatamente o que eu quero. Eu só preciso gerá-lo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Oldman
Novato
Novato


Registrado: Domingo, 16 de Junho de 2013
Mensagens: 91

MensagemEnviada: Qui Jun 27, 2013 1:14 pm    Assunto: Responder com Citação

Facilite o uso do Registro do windows utilizando apenas código puro. Tenta não usar a função, pois a mesma pode acabar confundindo.

Utilizando código apenas, sem função, para realizar o que deseja tente o seguinte:

Primeiro, você deseja acessar a raíz: HKEY_CLASSES_ROOT.

defina uma variável :

var reg: TRegistry;

Depois da clausula Begin digite:

reg:=Tregistry.create;

Agora defina a chave raiz a qual você deseja acessar:

reg.rootkey:= Hkey_Classes_Root;

Agora o que você precisa é abrir o caminho até a chave que você quer:

reg.OpenKey('WinRAR.ZIP\shell\Focus Backup',true);

Agora precisa gravar, nessa chave, um valor do tipo String, logo:

Reg.WriteString('MUIVerb','Restaurar backup aqui');


Tente fazer o mesmo com o outro código, porém, aparentemente, ele parece estar errado. Ao final de tudo lembre-se de fechar a chave: reg.CloseKey; e de liberar a memória: reg.free;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB