Como faço pra criar 2 endereços diferentes de registros???

28/12/2005

A pergunta é: Como faço pra criar 2 endereços diferentes de registro no mesmo programa???
Bom nesse código:

function TForm1.CriaRegistro(Remover: BOOL): string;
var
  strChaveApp: String;
  regAplicacao: TRegistry;
begin
  regAplicacao := TRegistry.Create;
  try
  with regAplicacao do
  begin
  strChaveApp := ´arquivo´;

  RootKey := HKEY_LOCAL_MACHINE;

  if OpenKey(strCHAVE_INICIAR, True) then
  begin
  if Remover = true then
  regaplicacao.DeleteValue(strChaveApp)
  else
  WriteString(strChaveApp, PASTA+´\pasta\arquivo.exe´);
  end;

  regAplicacao.CloseKey;
  end;
  finally
  regAplicacao.Free;
  end;
  CriaRegistro := ´´;
end;


Isso fez com que toda vez que o windows for inializado o programa [b:dda4f3b182]arquivo.exe[/b:dda4f3b182] se execulte automaticamente no diretório [b:dda4f3b182]pasta[/b:dda4f3b182], só que eu quero que gere 2 registros o 1º é esse mesmo, e o segundo em vez de ser aberto no diretório [b:dda4f3b182]pasta[/b:dda4f3b182] gostaria de fosse aberto no diretório [b:dda4f3b182]pasta2[/b:dda4f3b182], mais tratase do mesmo [b:dda4f3b182]arquivo.exe[/b:dda4f3b182] para ambos os registros...

Como que ficaria o código? oq eu acrecentaria nesse código acima para criação de 2 registros???


Duolon

Respostas

29/12/2005

Eixox

Nesse caso, você não ficaria com duas instâncias da mesma aplicação rodando?

Acredito que você poderia criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos.


Responder Citar

29/12/2005

Duolon

Nesse caso, você não ficaria com duas instâncias da mesma aplicação rodando? Acredito que você poderia criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos.


Exatamente isso que eu quero fazer, [b:0a04f565d7]criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos[/b:0a04f565d7]

mais o problema é que eu não sei como fazer isso... (não manjo nada de delphi...)

Oq eu acrecentaria no código que eu coloquei acima para fazer isso?


Responder Citar

29/12/2005

Duolon

Estava vendo, mais ñ sei se vai dá certo de de um único registro procurar em duas pastas diferentes... pq no msconfig na parte de inicializar cada arquivo inicializado aponta para um único endereço, axo q o mais correto seria colocar dois diferentes endereços tentei fazer isso mais ñ deu certo:

if OpenKey(strCHAVE_INICIAR, True) then 
  begin 
  if Remover = true then 
  regaplicacao.DeleteValue(strChaveApp) 
  else 
  WriteString(strChaveApp, PASTA+´\pasta\arquivo.exe´);
  WriteString(strChaveApp, PASTA+´\pasta2\arquivo.exe´);  
  end;


só foi criado a pasta\arquivo.exe na parte de iniciar do msconfig, a pasta2\arquivo.exe ñ :(

como faço pra criar 2 registros???


Responder Citar

29/12/2005

Eixox

Vejo que o que o Duolon colocou realmente não irá funcionar, até porque estão sendo criadas duas chaves com o mesmo nome e uma sobrescreverá a outra - senão me engano.

Um detalhe que você terá que fazer é o seguinte:

Quando a primeira aplicação for executada, a segunda também deverá ser executada, só que durante a sua inicialização, você deverá verificar se o programa já está sendo executado - se sim ele simplesmente será fechado, se não ele ficará em execução - sinal que a primeira instância da sua aplicação foi descoberta e provevelmente a segunda também será.

Existem um caras que postaram aqui um lance de incorporar um executável dentro de outro e depois os subtraem. Tente fazer isso, assim poderá também extrair o arquivo para a pasta onde o primeiro arquivo estava armazenado.


Responder Citar