Winexec não abre com PAnsiChar - Delphi

27/03/2016

0

Pessoal, estou com um problema:
Eu tenho um atualizador que inicia a partir da aplicação principal, mas o atualizador não abre de forma alguma.

var
diretorio: String;
begin
diretorio := (ExtractFilePath(Application.ExeName)+'Atualizador.exe');
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);

Quando faço dessa forma ele abre:

var
diretorio: String;
begin
diretorio := (ExtractFilePath(Application.ExeName)+'Atualizador.exe');
Memo1.Text := diretorio;
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);
WinExec('D:\OneDrive\Embarcadero\Studio\Projects\Rotinas\Licenca_V2\Licença\Win32\Debug\Atualizador.exe',SW_SHOWNORMAL);

Coloquei esse memo justamente para copiar o código gerado para o último winexec e funcionou.
Copiando também o código do memo para o cmd ele abre normalmente.
Tássio Gois

Tássio Gois

Responder

Post mais votado

27/03/2016

teste assim:

diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

28/03/2016

Tássio Gois

Fiz
diretorio := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName))+'Atualizador.exe';
WinExec(PAnsiChar(diretorio),SW_SHOWNORMAL);

Ainda não funcionou!
Responder

28/03/2016

Tássio Gois

Pessoal consegui com o Shellexecute.
Adicionei a unit shellapi e fiz o seguinte:

procedure TFrmMain.Atualizador2Click(Sender: TObject);
var
diretorio: String;
begin
diretorio := ExtractFilePath(Application.ExeName)+'Atualizador.exe';
ShellExecute(Handle,'open',pchar(diretorio),nil,nil,sw_show)
end;
Responder

07/06/2017

Renato Braz

Maravilha! Resolveu meu problema. Valeu pela dica.
Responder

23/02/2022

Vicente Santos

comigo funcionou fazendo dessa forma WinExec(PAnsiChar(AnsiString(diretorio)),sw_show); apartir do Delphi 2010
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar