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