Fórum Inserir no RegEdit! #220270
13/03/2004
0
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
Curtir tópico
+ 0Posts
13/03/2004
Tatuweb
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]
Gostei + 0
14/03/2004
Lipsil
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
Gostei + 0
14/03/2004
Lipsil
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
Gostei + 0
14/03/2004
Fórum Vini
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)