Página 1 de 1

Abrir arquivo com programa padrao

Enviado: 09 Fev 2011 00:04
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?

Re: Abrir arquivo com programa padrao

Enviado: 09 Fev 2011 00:06
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**********************************
********************************************************************************

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 01:31
por janio
deu só o filé aqui!

Valeu!

Janio

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 14:01
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"

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 14:17
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.

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 16:38
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

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 19:54
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"

Re: Abrir arquivo com programa padrao

Enviado: 10 Fev 2011 21:07
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!