Abrir arquivo em uma aplicação

Delphi

24/04/2008

.: Necessidade :.

Abrir o arquivo que o usuário associou a um texto na aplicação (podendo ser QUALQUER TIPO de arquivo *.doc, *.avi, *.txt; *.pas, entre outros)

Por exemplo: \\maquina1\tmp\teste1.pdf
\\maquina2\tmp\teste.doc
\\maquina3\tmp\teste155.avi
\\maquina4\tmp\teste.swf

Logo, devo fazer um módulo em que um outro usuário, além de ler o texto escrito, consiga abrir o anexo, ou seja, clicar 2x no arquivo (NA APLICAÇÃO) e o Windows se encarregar de abrir o arquivo no programa apropriado ou abrir aquela famosa janela que aparece quando clicamos num arquivo que não tem programa padrão associado:

´O Windows não pode abrir este arquivo:

Arquivo: XYZ.tmp,

Para abrir o arquivo, o Windows precisa saber com que programa ele foi criado. O windows pode ser conectar à Internet ... O que você deseja fazer?

0 Use o serviço Web para encontrar o programa apropriado
0 Selecionar o programa na lista

.: Informações complementares :.

1. O caminho completo para o arquivo e seu nome estão armazenados em um campo de uma tabela do meu banco de dados (esse não é o meu problema).

2. NÃO É uma aplicação de email e não tenho nada usando componentes Indy.

3. Não é um e-mail.


Rasn

Rasn

Curtidas 0

Respostas

Rodc

Rodc

24/04/2008

Crie os links para os arquivos e quando o cliente clicar neles, use o ShellExecute da unit ShellAPI para rodar o arquivo.
ShellExecute(nil, ´open´, PChar(´\\maquina1\tmp\teste1.pdf´), ´´, ´´, SW_SHOW);



GOSTEI 0
Rasn

Rasn

24/04/2008

rodc,

Isso funciona corretamente quando existe um programa (visualizador) associado para a extensão, por exemplo:

.doc -> Word
.xls -> Excel
.txt -> Notepad
.pdf -> Adobe Reader

Porém, no meu caso, o usuário associa QUALQUER EXTENSÃO e muitas vezes são proprietárias, por exemplo, .xtr .sip .rem

Logo, nesses casos, precisaria que o Windows mostrasse a janela de escolha do programa apropriado (igual a do Windows Explorer quando o arquivo não tem um software default associado e a gente tenta abrir o arquivo).

Tem alguma idéia de como posso resolver isso?

Obrigado pela atenção!


GOSTEI 0
POSTAR