Try Except com Shell Execute
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:
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?
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
Curtidas 0
Respostas
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...
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
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
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
15/02/2014
Que bom que deu certo!
Abraços
Abraços
GOSTEI 0
Marisiana Battistella
15/02/2014
Por nada Deivid! =)
Fico feliz por ter contribuido!
Fico feliz por ter contribuido!
GOSTEI 0