Fórum Inserir no RegEdit! #220270

13/03/2004

0

Olá pessoal,
como faço pra colocar a rodar do meu aplicativo delphi uma edição do regedit de alguma chave qualquer? tipo pra tornar meu aplicativo padrão em abertura de arquivos de um determinada extenção.



Valew


Lipsil

Lipsil

Responder

Posts

13/03/2004

Tatuweb

Exerimente a rotina abaixo. Não se esqueça de declarar a cláusula uses as units registry, shlobj.

procedure RegisterFileType (prefixo: string; exe: string);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
reg.OpenKey (´.´ + prefixo, True);
try
reg.Writestring(´´, prefixo + ´file´);
finally
reg.CloseKey;
end;
reg.CreateKey (prefixo + ´file´);
reg.OpenKey (prefixo + ´file\DefaultIcon´, True);
try
reg.Writestring(´´, exe + ´,0´);
finally
reg.CloseKey;
end;
reg.OpenKey(prefix + ´file\shell\open\command´, True);
try
reg.Writestring(´´, exe + ´ ´¬1´´);
finally
reg.CloseKey;
end;
finally
reg.Free;
end;
SHChangeNotify (SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
// ext é a extensão que será associada ao aplicativo project1
RegisterFileType (´ext´, ´c:\project1.exe´);
end;


... é pau, é bug, é o fim do programa,
é um erro fatal, o começo do drama
é o computador, me fazendo de otário,
não compila o programa salva só comentário ...[quote:fd343c392d][/quote:fd343c392d]


Responder

Gostei + 0

14/03/2004

Lipsil

Bá, valew kra...
e quase deu certo, mas não sei se é eu q não entendi ele ou esta com problemas, pois depois ele tenta abrir o arquivo documents.exe e este não existe, verifiquei no regedit e percebi q esse script aí coloca tudo numa chave só, mas em comparação aos outros fica diferente, pois deles uma extenção chama outra chave onde tem dados do aplicativo, não sei se isso influencia, só sei q não funfou :( ...

Então como seria nesse caso pra deixar um arquivo padrão de extenção .LSP ?


Valew


Responder

Gostei + 0

14/03/2004

Lipsil

Olá,
andei vendo como funciona o regedit e exportando chaves descobri como q é e o q precisa, só não sei como passar pro delphi isso.
Tipo basta colocar o seguinte em um arquivo .reg (teste.reg):
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Applications\LSPlayer.exe]

[HKEY_CLASSES_ROOT\Applications\LSPlayer.exe\shell]
"FriendlyCache"="LSPlayer"
"FriendlyCacheCTime"=hex:00,f6,7e,0f,57,09,c4,01
@="open"

[HKEY_CLASSES_ROOT\Applications\LSPlayer.exe\shell\open]

[HKEY_CLASSES_ROOT\Applications\LSPlayer.exe\shell\open\command]
@="\"C:\\Documents and Settings\\Rafael Lippert\\Desktop\\LSPlayer\\LSPlayer.exe\" \"¬1\""

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3]
"Application"="LSPlayer.exe"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\OpenWithList]
"a"="LSPlayer.exe"
"MRUList"="ab"
"b"="mplayer2.exe"


E isso, irá tornar o LSPlayer.exe como o padrão da extenção .mp3. Bem, como fazer invez de dentro do teste.reg rodar isso do delphi? O cód acima dexa dentro da chave raiz root apenas...

Sabe me dizer como q fica daí?


Valew


Responder

Gostei + 0

14/03/2004

Fórum Vini

Ae kra,
aqui a procedure funcionou normalmente, só que tinha o nome de um parâmetro errado:
procedure RegisterFileType (prefixo: string; exe: string);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    reg.OpenKey (´.´ + prefixo, True);
    try
      reg.Writestring(´´, prefixo + ´file´);
    finally
      reg.CloseKey;
    end;
    reg.CreateKey (prefixo + ´file´);
    reg.OpenKey (prefixo + ´file\DefaultIcon´, True);
    try
      reg.Writestring(´´, exe + ´,0´);
    finally
      reg.CloseKey;
    end;
    reg.OpenKey(prefixo + ´file\shell\open\command´, True);
    try
      reg.Writestring(´´, exe + ´ "¬1"´);
    finally
      reg.CloseKey;
    end;
  finally 
    reg.Free;
  end; 
  SHChangeNotify (SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

Para chamá-la, faça assim:
RegisterFileType(´lsp´, Application.ExeName);


Espero ter ajudado.
Vinicius.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar