Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Retorna a instalacao do windows e copia!


devil69

Pergunta

Boas!!

function ExtractWindowsDir : string;
var
 Buffer : array[0..144] of Char;
begin
GetWindowsDirectory(Buffer,144);
Result := StrPas(Buffer);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
destino:string;
begin
destino:=ExtractWindowsDir;
CopyFile(Pchar(Application.ExeName),Pchar(ExtractWindowsDir), true);
Showmessage('copiado');
end;

end.

Bom pessoal a funcao (ExtractWindowsDir) retorna o diretorio de instalacao do windows,

eu queria que a minha aplicacao fosse copiada para esse diretorio mas não to conseguindo copiar!!

Aguem me pode explicar o que to a fazer mal!!!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa

Seguinte, falta o Delimitador de Caminho de arquivos "\"

Então a função está retornando assim exemplo

"C:\WINDOWS"

Quando voce chama a função CopyFile, você está passando a ela isso

"C:\WINDOWSMinhaAplicacao.exe

Ou seja, faltou a "\", resumindo o que eu sempre uso, é uma rotina que fica em SysUtils que "insere"

a barra caso não haja então ficaria assim

function ExtractWindowsDir : string;
var
Buffer : array[0..144] of Char;
begin
GetWindowsDirectory(Buffer,144);
Result := IncludeTrailingPathDelimiter(StrPas(Buffer));
end;
Então ao chamar a funcao ExtractWindowsDir agora vai retornar "C:\WINDOWS\" E na função CopyFile você deve passar os 2 caminhos completos, e não apenas parte deles exceto se o arquivo a ser copiado está no mesmo caminho do qual está fazendo a cópia... exemplo CopyFile(a, b, c); a = Caminho e nome do arquivo b = Caminho e nome para onde ele vai c = Se voce colocar False, então se o arquivo já existir ele sobreescreve, se voce colocar True, ele não vai sobreescrever.... Então ficaria... somente como exemplo, adapte as suas necessidades...
procedure TForm1.Button1Click(Sender: TObject);
begin
if CopyFile(Pchar(Application.ExeName), Pchar(ExtractWindowsDir + Application.ExeName), False) then
Showmessage('copiado') else
Showmessage('não copiou');
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...