Problema ao criar atalho de internet

01/12/2021

0

Estou com um problema na criação de atalho da internet. Estou utilizando a seguinte função para criar os atalhos:

procedure CriarAtalhoDaNet(const FileName, URL, Icon : string);
var

INI : TIniFile;
directory : string;

begin

directory := ExtractFilePath (Application.ExeName);
INI := TIniFile.Create(directory + FileName + ''.url'');

with INI do
try

//Escrevendo a URL do Atalho
WriteString(''InternetShortcut'',''URL'',URL);

//Extraindo Ícone de um Executável, neste caso do EXE do Internet Explorer
WriteString(''InternetShortcut'',''IconFile'', Icon);

//Colocando o ìndice do ícone, porque o executavel possui mais de um Ícone
WriteString(''InternetShortcut'',''IconIndex'',''0'');

finally
FreeAndNil(INI);
end;

FreeAndNil(INI);

end;

E dentro de um botão, eu chamo a função da seguinte forma: CriarAtalhoDaNet(''Teste'', ''https://www.google.com.br'', ''C:\Delphi\teste\Win32\Debug\Icons\AreaDeArquivos.ico'');
Assim que é executado essa função, o programa cria o arquivo .url corretamente e caso eu abra ele cai no site do google.

Porém, se eu executar o programa novamente, trocando apenas a URL da função, por exemplo: CriarAtalhoDaNet(''Teste'', ''https://www.youtube.com'', ''C:\Delphi\teste\Win32\Debug\Icons\AreaDeArquivos.ico'');
Ele não sobrescreve a URL que está no arquivo .url

Conforme está na função, já tentei usar o FreeAndNil para liberar o objeto, já tentei utilizar somente o Free para as informações não ficarem presas.

Mesmo apagando o arquivo, ele não cria novamente com a URL que eu solicitei, só vai funcionar se eu executar o programa em outro diretório, mas depois de executar em outro diretório, aquele também já era.
Fiz várias confirmações de que ele recebe o valor correto quando eu chamo a função, inclusive se eu acessar as Propriedades do arquivo, na aba "Documento da Web" ele fica com a URL da primeira vez que foi executado (que nessa ocasião seria https://www.google.com.br), mas caso eu acesse a aba "Detalhes" terá na coluna Propriedade a "URL" com o valor "https://www.youtube.com".

Consegui verificar, que quando troco o nome depois de executado o programa pela segunda vez, ele troca para a URL correta. Por exemplo: Executei a primeira vez com a URL: https://www.google.com.br, em seguida apaguei o arquivo e executei a segunda vez com a URL: https://www.youtube.com. Ele ficará salvo a URL: https://www.google.com.br (Que está incorreto), mas caso eu altere o nome do arquivo manualmente de "Teste" para "Teste1", ele recebe a URL: https://www.youtube.com.(OBS: Caso eu volte o nome para "Teste", ele volta a URL para https://www.google.com.br)

Estou quebrando a cabeça já tem uns dias com esse problema, não sei mais o que fazer.
Lucas Ribeiro

Lucas Ribeiro

Responder

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

Aceitar