Abrir arquivo com programa padrao

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Abrir arquivo com programa padrao

Mensagem por janio »

Ola a todos,

Preciso abrir um arquivo com o PROGRAMA PADRÃO que está configurado no windows, seja ele qual for. Exemplo: Se o windows estiver configurado para abrir arquivos .doc no BrOffice, que abra pelo BrOffice sem que seja necessário uma intervenção do usuário informando qual programa deve abrir o arquivo.

Quero pedir ao windows para abrir um arquivo e o windows escolha qual programa vai abrir aquele arquivo.

Alguem tem ideia?
Editado pela última vez por Maligno em 10 Fev 2011 08:58, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Ferramentas de Apoio, uma vez que seu conteúdo não tem relação com os objetivos daquela seção.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Abrir arquivo com programa padrao

Mensagem por alaminojunior »

Fala Jânio.
Essa eu peguei do Leonardo Machado.

Código: Selecionar todos

********************************************************************************
***************INCIO DA FUNCAO DE ABRIR ARQUIVOS********************************
********************************************************************************
// Open help file with associated viewer application
FUNCTION Abre_arquivo( cHelpFile )
   LOCAL nRet, cPath, cFileName, cFileExt
   HB_FNameSplit( cHelpFile, @cPath, @cFileName, @cFileExt )
   nRet := _OpenHelpFile( cPath, cHelpFile )
RETURN nRet

#pragma BEGINDUMP
#pragma comment( lib, "shell32.lib" )
#include "hbapi.h"
#include "windows.h"
   HB_FUNC( _OPENHELPFILE )
   {
     HINSTANCE hInst;
     LPCTSTR lpPath = (LPTSTR) hb_parc( 1 );
     LPCTSTR lpHelpFile = (LPTSTR) hb_parc( 2 );
     hInst = ShellExecute( 0, "open", lpHelpFile, 0, lpPath, SW_SHOW );
     hb_retnl( (LONG) hInst );
     return;
   }
#pragma ENDDUMP
********************************************************************************
***************FIM DA FUNCAO DE ABRIR ARQUIVOS**********************************
********************************************************************************
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Re: Abrir arquivo com programa padrao

Mensagem por janio »

deu só o filé aqui!

Valeu!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Abrir arquivo com programa padrao

Mensagem por rochinha »

Amiguinhos,

Após reinstalar meu Windows tentei abrir um .DBF por várias vezes e o mesmo só era aberto pelo Notepad, mesmo eu tendo forçado a abertura pelo DBFViewer(utilitario que eu uso).

Então analisando o registro do Windows retirei o conjunto de chaves que agreguei no meu .REG pessoal de tunagem para instalação.

Código: Selecionar todos

Windows Registry Editor Version 5.00

;------------------------------------------------------------------------------
;Abertura de DBF pelo DBFViewer
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.DBF]
"Application"="C:\\meus arquivos\\DBFViewer2000\\dbview.exe"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.DBF\OpenWithList]
"a"="dbview.exe"
"MRUList"="a"
"a"="dbview2.exe"
Depois fiz a seguinte alteracao de forma que pudesse abrir imagem .BMP com meu programa favorito:

Código: Selecionar todos

Windows Registry Editor Version 5.00

;------------------------------------------------------------------------------
;Abertura de BMP pelo IrfanView
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BMP]
"Application"="C:\\meus arquivos\\IrfanView\\i_view32.exe"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BMP\OpenWithList]
"a"="i_view32.exe"
"MRUList"="a"
"a"="i_view32.exe"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Abrir arquivo com programa padrao

Mensagem por Maligno »

Esqueceram de comentar um detalhe importante para os leigos. É apenas uma lembrança para aqueles que virem muitas possibilidades nesse tipo de artifício: um programa só pode se tornar padrão para a abertura de um determinado tipo de arquivo se ele próprio tiver sido construído para aceitar um argumento de linha de comando. Sem isso, nada feito. Não basta apenas "escolher" que programa abrirá certo tipo de arquivo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Re: Abrir arquivo com programa padrao

Mensagem por MARCELOG »

Olá combatente,
por padrão, quando se digita um nome de arquivo e extensão no prompt do Windows(R), ele abre o arquivo com o programa associado.
Se, por exemplo, em associações, o usuário definiu que o arquivo com extensão .xls vai ser aberto com o Excel, ao digitar arquivo.xls no msdos o programa será chamado automaticamente e tentará abrir o arquivo.
Simples assim.
Então, com base em postagens dos colegas, adaptei a função a seguir de modo que executar vários comandos de linha no prompt msdos do Window(R).
Inclusive a simples entrada do nome de arquivo que chama automaticamente o programa associado.
Ex:
MYRUN("teste.doc") abre o arquivo teste.doc com o Word se os documentos .doc estiverem associados ao mesmo.

MYRUN("teste.doc",1,.t.) faz a mesma coisa, mas mantém a janela msdos ativa e aguarda até fechar o documento Word (teste.doc) que foi aberto.

MarceloG

Ps: O arquivo tem que existir!

Código: Selecionar todos

FUNCTION MYRUN(cAcao,nExibe,lEspera)

LOCAL oShell, lRetorno

DEFAULT nExibe TO 0

DEFAULT lEspera TO .F.

oShell := CREATEOBJECT('WSCRIPT.SHELL')

lRetorno := oShell:RUN(cAcao,nExibe,lEspera)

oShell := NIL

RETURN lRetorno
Editado pela última vez por Toledo em 10 Fev 2011 22:33, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Abrir arquivo com programa padrao

Mensagem por rochinha »

Amiguinhos,

Como o Maligno postou, só haverá a abertura de um determinado e extensão se o programa que o abrirá, tiver a capacidade de receber parametros de linha de comando.

Código: Selecionar todos

FUNCTION MAIN()
   USE &( PARAMETRO ) SHARED
   RETURN .T.
Ao compilar-mos o codigo acima, e executar-mos na linha de comandos, por exemplo:

TESTE CLIENTES

O programa será executado mas não abrirá nenhum arquivo, pois nao tem a capacidade de receber parametros, mesmo que o façamos via registro, etc.

Código: Selecionar todos

FUNCTION MAIN( PARAMETRO )
   USE &( PARAMETRO ) SHARED
   RETURN .T.
Neste segundo exemplo ao executar-mos o mesmo comando obteremos a abertura do arquivo que foi passado como parametro.

Se fizermos a associação deste aplicativo com uma extensão o Windows o reconhecerá como um dos programas que poderá abrí-lo.

Exemplo de associação que apresentará no menu de contexto mais de uma opção para abertura de um mesmo tipo de arquivo por mais de uma ferramenta:

Código: Selecionar todos

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.DBF\OpenWithList]
"c"="TESTE.EXE"
"MRUList"="cab"
"a"="dbview.exe"
"b"="dbu.exe"
"c"="TESTE.EXE"
Vejam que em "MRUList" vemos "cab" que é a ordem de prioridade de abertura do arquivo associado, ou seja, a primeira opção de abertura será "TESTE.EXE", a segunda "dbview.exe" e a terceira "dbu.exe"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Re: Abrir arquivo com programa padrao

Mensagem por janio »

MarceloG
por padrão, quando se digita um nome de arquivo e extensão no prompt do Windows(R), ele abre o arquivo com o programa associado.
E é!? Dessa eu naum sabia!
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder