Try Except com Shell Execute

15/02/2014

0

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

Responder

Posts

15/02/2014

Marisiana Battistella

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...
Responder

17/02/2014

Luiz

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;



Responder

20/02/2014

Deivid Costa

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.
Responder

20/02/2014

Luiz

Que bom que deu certo!

Abraços
Responder

20/02/2014

Marisiana Battistella

Por nada Deivid! =)
Fico feliz por ter contribuido!
Responder

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

Aceitar