Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
API : Ocultar/mostrar ventana base de datos
Autor/es:
Juan M Afán de Ribera
Pregunta : Se que puedo configurar las propiedades de inicio de Access para que no muestre la ventana base de datos, incluso se hacerlo mediante código, gracias a la función de este enlace. Pero ¿sería posible hacerlo mediante código sin tener que reiniciar la base de datos?
Respuesta : Sí. Para hacerlo de una manera simple puedes mirarte este enlace. Para hacerlo via API puedes hacerlo utilizando la función ShowDatabaseWindow.

Ejemplo de uso:
' para ocultar la ventana base de datos
Call ShowDatabaseWindow(False)

' para mostrar la ventana base de datos
Call ShowDatabaseWindow(True)
' Pega el siguiente código en un módulo estandar (las declaraciones de funciones del API deben situarse siempre por encima del código de cualquier función o procedimiento sub)
'---------------------------------------------------------
'
' ShowDatabaseWindow
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Private Const SW_SHOWNORMAL = 1&
Private Const SW_HIDE = 0&

' función para mostrar/ocultar ventanas
Private Declare Function ShowWindow Lib "user32" _
                (ByVal hwnd As Long, _
                ByVal nCmdShow As Long) As Long
                
' función para localizar una ventana
Private Declare Function FindWindowEx Lib "user32" _
                Alias "FindWindowExA" _
                (ByVal hWnd1 As Long, _
                ByVal hWnd2 As Long, _
                ByVal lpsz1 As String, _
                ByVal lpsz2 As String) As Long
                
' función para obtener el título de una ventana
Private Declare Function GetWindowText Lib "user32" _
                Alias "GetWindowTextA" _
                (ByVal hwnd As Long, _
                ByVal lpString As String, _
                ByVal cch As Long) As Long

Function ShowDatabaseWindow(Show As Boolean)
Dim hWndMdi As Long
Dim hWndODb As Long
Dim hWndSDIa As Long
Dim sODb As String
Dim LensODb As Long

    ' localizamos la ventana del fondo de Access
    hWndMdi = FindWindowEx(hWndAccessApp, 0&, "MDIClient", vbNullString)
    ' localizamos la ventana de base de datos de Access
    hWndODb = FindWindowEx(hWndMdi, 0&, "ODb", vbNullString)

    If hWndODb Then
        If Show Then
            ' mostramos la ventana base de datos
            ShowWindow hWndODb, SW_SHOWNORMAL
        Else
            ' ocultamos la ventana base de datos
            ShowWindow hWndODb, SW_HIDE
        End If

        sODb = String(256, vbNullChar)
        ' obtenemos el título y su longitud de la
        ' ventana base de datos
        LensODb = GetWindowText(hWndODb, sODb, 256&)
        sODb = Left(sODb, LensODb)
        
        ' localizamos la ventana de la base de datos
        ' en la barra de tareas (aplicaciones en ejecución)
        hWndSDIa = FindWindowEx(0&, 0&, "MS-SDIa", sODb)
        If hWndSDIa Then
            If Show Then
                ' mostramos la ventana
                ShowWindow hWndSDIa, SW_SHOWNORMAL
            Else
                ' ocultamos la ventana
                ShowWindow hWndSDIa, SW_HIDE
            End If
        End If
    End If

End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

StartUpProperties

Desactivar opciones barra de título ventana principal de Access

 

Última actualización: 11/6/2005