MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Programa padrão

    Compartilhe

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 134
    Registrado : 14/08/2011

    [Resolvido]Programa padrão

    Mensagem  leoni_dias em 20/4/2018, 18:55

    Bom dia, senhores.

    Gostaria de, usando um código, saber se existe um programa padrão instalado para abrir um tipo de arquivo.

    Ex.: Usando um código para ver se um arquivo, tipo PDF, pode ser aberto, se tem programa para esse arquivo instalado e qual o programa.

    Via vb talvez, já que uso o access 2003.

    Obrigado.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Programa padrão

    Mensagem  Noobezinho em 20/4/2018, 21:04

    Leoni

    Tem vários softwares que abrem arquivos .pdf.

    A começar pelo Acrobat Reader, Foxit Reader, entre outros.

    Como são muitos programas, fica difícil programar um algoritmo para verificar

    qual programa está instalado em um computador.

    [ ]'s

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 134
    Registrado : 14/08/2011

    Re: [Resolvido]Programa padrão

    Mensagem  leoni_dias em 20/4/2018, 22:50

    Boa noite.

    Por isso eu citei pra verificar o programa que o windows associou à determinada extensão, o programa padrão.

    Fiz da forma abaixo. Funciona perfeitamente, mas tá dando erro ao fechar o access.


    'Em um módulo
    Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
    '----------------------------------------------------------------------------------------------------
    'Em um evento do form ou botão
    Dim nomearq$, a, resultado
    nomearq$ = "INSTALADOR.pdf"
    a = FindExecutable(nomearq, CurrentProject.PATH, resultado)
    Select Case a
    Case 0 ': MsgBox "Memória insuficiente para realizar esta operação", vbCritical
    extenso = "Memória insuficiente"
    Case 31 ': MsgBox "Não há nenhum aplicativo associado para essa extensão <.pdf>", vbInformation
    extenso = "Não há nenhum aplicativo associado"
    Case 2 ': MsgBox "Arquivo especificado não pôde ser encontrado.", vbInformation
    extenso = "Arquivo especificado não pôde ser encontrado"
    Case 3 ': MsgBox "Caminho não encontrado.", vbInformation
    extenso = "Caminho não encontrado."
    Case 5 ': MsgBox "Executável inválido (non-Win32 .exe or error in .exe).",
    extenso = "Executável inválido"
    Case Else 'se não deu nenhum erro, abre o arquivo
    extenso = "Existe programa para o arquivo"
    End Select
    avatar
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 656
    Registrado : 07/05/2010

    Re: [Resolvido]Programa padrão

    Mensagem  Jungli em 20/4/2018, 22:52

    Boas,

    se a questão é apenas abrir um pdf,
    independente do programa instalado em sua máquina,

    este exemplo deve lhe servir.
    Anexos
    PDF.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (101 Kb) Baixado 7 vez(es)


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Programa padrão

    Mensagem  Noobezinho em 20/4/2018, 23:03

    Glicerio

    Muito bom esse teu exemplo.

    Com poucas linhas ele abre o programa padrão para o arquivo.

    Detalhe, eu tenho no computador o Foxit Reader Portable (Não precisa instalar).

    Como eu o defini como programa padrão para arquivos.pdf, abre legal. Wink

    [ ]'s


    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 134
    Registrado : 14/08/2011

    Re: [Resolvido]Programa padrão

    Mensagem  leoni_dias em 20/4/2018, 23:36

    Boa noite.

    Parece que o problema foi sanado. Tirei a declaração do módulo e coloquei no próprio form.

    Obrigado

    '--------------------------------------------------------------
    'Colocar nas declarações do prório form
    Private Declare Function FindExecutable Lib "shell32" _
    Alias "FindExecutableA" _
    (ByVal lpFile As String, _
    ByVal lpDirectory As String, _
    ByVal sResult As String) As Long

    Private Const MAX_PATH As Long = 260
    Private Const ERROR_FILE_NO_ASSOCIATION As Long = 31
    Private Const ERROR_FILE_NOT_FOUND As Long = 2
    Private Const ERROR_PATH_NOT_FOUND As Long = 3
    Private Const ERROR_FILE_SUCCESS As Long = 32 'my constant
    Private Const ERROR_BAD_FORMAT As Long = 11
    '---------------------------------------------------------------------------


    '---------------------------------------------------------------------------
    'Usar em um botão ou evento do form. O restante do código, mudar a gosto
    Dim success As Long
    Dim pos As Long
    Dim sResult As String
    Dim msg As String

    sResult = Space$(MAX_PATH)

    'lpFile: name of the file of interest
    'lpDirectory: location of lpFile
    'sResult: path and name of executable associated with lpFile
    success = FindExecutable("EMAIL.pdf", CurrentProject.PATH, sResult)

    Select Case success
    Case ERROR_FILE_NO_ASSOCIATION ': msg = "no association"
    extenso = "Não há nenhum aplicativo associado"

    Case ERROR_FILE_NOT_FOUND ': msg = "file not found"
    extenso = "Arquivo especificado não pôde ser encontrado"

    Case ERROR_PATH_NOT_FOUND ': msg = "path not found"
    extenso = "Caminho não encontrado."

    Case ERROR_BAD_FORMAT ': msg = "bad format"
    extenso = "Executável inválido"

    Case Is >= ERROR_FILE_SUCCESS:
    extenso = "Existe programa para o arquivo"

    End Select
    '--------------------------------------------------------

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Programa padrão

    Mensagem  Noobezinho em 20/4/2018, 23:41

    Que bom que resolveu Leoni

    Boa sorte!

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 134
    Registrado : 14/08/2011

    Re: [Resolvido]Programa padrão

    Mensagem  leoni_dias em 20/4/2018, 23:47

    Boa noite novamente.

    Não é apenas para abrir o PDF ou outro arquivo, isso é fácil. É para, sem o usuário ter que procurar, o bd informar que já  existe um programa  padrão no windows
    associado a extensão procurada. Ai o usuário decide se instala outro ou não.

    Para abrir um arquivo com o programa padrão eu uso o hiperlink, menos código e sem módulo:

    '---------------------------No botão
    Dim strPDF As String
    strPDF = CurrentProject.PATH & "\INSTALADOR.pdf"
    Application.FollowHyperlink strPDF
    '-----------------------------------

    Tomara que sirva como ajuda, assim como me ajudaram.

    Boa noite e obrigado.
    avatar
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 656
    Registrado : 07/05/2010

    Re: [Resolvido]Programa padrão

    Mensagem  Jungli em 21/4/2018, 02:41

    Como diria o Mestre JPaulo,
    Existem várias formas de se fazer Nestun ....

    O importante é que Resolveste o seu problema,

    Abraços...


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles

    leoni_dias
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 134
    Registrado : 14/08/2011

    Re: [Resolvido]Programa padrão

    Mensagem  leoni_dias em 21/4/2018, 12:48

    Aprendi muito com o mestre doss ccódigos JPaulo, Cricrio e outros.

    Esse forum sempre me ajudou muito.

    Obrigado.

      Data/hora atual: 21/11/2018, 02:22