Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            vba: copiar texto al portapapeles
            25/01/2023
            vba: Introducción al VBIDE
            27/01/2023
            Mostrar todos

            vba: utilizar una referencia en tiempo de ejecución

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • CallWindowProc
            • GetProcAddress
            • LoadLibrary
            Option Compare Database
            Option Explicit
            
            Public Sub ImgageView(ImgPath As String)
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-utilizar-una referencia-en-tiempo-de-ejecucion
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : ImgageView
            ' Autor original    : zxs23 (https://www.forosdelweb.com/f69/como-ejecutar-imagen-con-visor-imagenes-windows-935362/)
            ' Adaptado          : Luis Viadel
            ' Creado            : enero 2023
            ' Propósito         : mostrar una imagen en el visor de imágenes de Windows
            ' Argumento/s       : La sintaxis de la rutina consta del siguiente argumento:
            '                     Nombre          Modo             Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     ImgPath         Obligatorio      Dirección completa del fichero de imagen que queremos visualizar
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencias       : https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryw
            '                   : https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getprocaddress
            '                   : https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-callwindowproca
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Test:             : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copia el bloque siguiente al
            '                     portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento.
            '
            'Sub ImgageView_test()
            'Dim ImgPath As String
            '
            '    ImgPath = "Dirección de la imagen"
            '
            '    Call ImgageView(ImgPath)
            '
            'End Sub
            '
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim Lib As Long
            Dim LibAdd As Long
                
                Lib = LoadLibrary("shimgvw")
            
                LibAdd = GetProcAddress(Lib, "imageview_fullscreenW")
            
                CallWindowProc LibAdd, 0&, 0&, StrPtr(ImgPath), 0&
                
            'Liberar la librería
                FreeLibrary Lib
                
            End Sub
            
            
            ¡Ver en el repositorio!
            Compartir
            18
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            30/03/2023

            Tratamiento de errores: compilación condicional


            Leer más
            29/03/2023

            Tratamiento de errores: errores personalizados


            Leer más
            28/03/2023

            Tratamiento de errores: Resume


            Leer más

            2 Comments

            1. Alba Salvá dice:
              27/01/2023 a las 11:00 am

              Una cuestión…
              ¿ ‘Liberar la librería “FreeLibrary LibAdd” no debería ser “FreeLibrary lib” ?

              Lo comento porque la librería se carga en la variable “lib” (lib = LoadLibrary(“shimgvw”)), y “LibAdd” obtiene la dirección de la llamada al punto de ejecución ( LibAdd = GetProcAddress(lib, “imageview_fullscreenW”) )

              La ejecución se realiza con “CallWindowProc LibAdd, 0&, 0&, StrPtr(ImgPath), 0& “, es decir, se llama al procedimiento ubicado en la dirección obtenida por GetProcAddress, mientras que la librería se ha cargado en en la variable lib.

              Un cordial saludo a todos.

              Alba.

              Responder
              • Luis Viadel dice:
                27/01/2023 a las 11:23 am

                Gracias Alba, siempre tan atenta. He utilizado erróneamente la variable de la dirección.
                Lo corregimos en la entrada.

                Responder

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Replace Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              Tratamiento de errores: compilación condicional
              30/03/2023
            • 0
              Tratamiento de errores: errores personalizados
              29/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados