Try Except com Shell Execute

Delphi

15/02/2014

Boa Tarde pessoal,

Estou dentando fazer um tratamento com try except para que caso ele não consiga abrir o WORD o sistema informe uma mensagem de erro porem nao dá certo, o codigo esta assim:
begin
  Try
    shellexecute(Handle, 'open', 'winword1.exe', '', nil,sw_shownormal);
  Except
    Application.MessageBox('Não foi possivel executar o Microsoft Word. '+#13+'Entre em contato com o setor de TI para verificar.', 'Atenção',MB_ICONERROR);
  End;
end;


Alterei o comando WINWORD.EXE para WINWORD1.EXE para testar o try, porem quando clico no botão que faz essa função o sistema não aparece a mensagem de erro. Alguem poderia me dar uma ajudar?
Deivid Costa

Deivid Costa

Curtidas 0

Respostas

Marisiana Battistella

Marisiana Battistella

15/02/2014

Olá Deivid!
Encontrei este post no site que fala sobre esse comando ShellExecute que vc está utilizando:
[url]https://www.devmedia.com.br/usando-shellexecute-para-executar-aplicativos-externos/613[/url]

Percebi que nos exemplos deste post em nenhum deles é utilizado o "nil", em todos é passada um string vazia..
Como por exemplo: ShellExecute(handle,'open',PChar(edArquivo.Text), '','',SW_SHOWNORMAL);

Não sei se isso tem alguma a ver ou não...
GOSTEI 0
Luiz

Luiz

15/02/2014

o shellexecute retorna o erro na chamada da função, veja um exemplo ... existem outros erros, veja como acha melhor tratar, caso tenha necessidade va com debug para ver os retornos ..

procedure TForm1.Button1Click(Sender: TObject);
var
  retorno : integer;
begin
 retorno := shellexecute(Handle, 'open', 'winword1.exe', '', nil,sw_shownormal);

if ( retorno = ERROR_FILE_NOT_FOUND) then 
begin
    ShowMessage('Arquivo não encontrado!');
    exit;
end

end;



GOSTEI 0
Deivid Costa

Deivid Costa

15/02/2014

o shellexecute retorna o erro na chamada da função, veja um exemplo ... existem outros erros, veja como acha melhor tratar, caso tenha necessidade va com debug para ver os retornos ..

procedure TForm1.Button1Click(Sender: TObject);
var
  retorno : integer;
begin
 retorno := shellexecute(Handle, 'open', 'winword1.exe', '', nil,sw_shownormal);

if ( retorno = ERROR_FILE_NOT_FOUND) then 
begin
    ShowMessage('Arquivo não encontrado!');
    exit;
end

end;





Obrigado Luiz funcionou certinho.
Obrigado pelo pela indicação do post Marisiana.

Obrigado a todos pela ajuda.
GOSTEI 0
Luiz

Luiz

15/02/2014

Que bom que deu certo!

Abraços
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

15/02/2014

Por nada Deivid! =)
Fico feliz por ter contribuido!
GOSTEI 0
POSTAR