Saltar al contenido

Duda sobre captura hwnd de los objetos de Userforn


Recommended Posts

publicado

Veamos tengo la siguiente duda se puede capturar un hwnd de cualquier objeto que este en el userform?, por el momento logro esta acción sobre el userform con el uso de api pero no lo logro para por ejemplo un combobox

Para la captura del hwnd uso lo siguiente

Option Explicit

' declaración api
''''''''''''''''''''''''''''''''''''''''''
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 la captura
''''''''''''''''''''''''''''''''''''''''''
Function CapturahWnd(from As String, _
                    Cosa As Boolean, _
                    Optional control As String) As Long
    Dim i As Long
    If Cosa Then
        i = FindWindowEx(0&, 0&, vbNullString, from)
        i = FindWindowEx(i, 0&, vbNullString, from)
    Else
         i = FindWindowEx(0&, 0&, vbNullString, control)
   End If
   CapturahWnd = i
End Function
' evento que llama la captura
''''''''''''''''''''''''''''''''''''''''''
Private Sub CommandButton1_Click()
    Dim i As Long
    i = CapturahWnd(Me.Caption, False) 'Para saber el hwnd Formulario
    i = CapturahWnd(Me.Caption, False, "ComboBox1") 'Para saber el hwnd de un control
End Sub

si en principio le hwnd es solo de las ventanas activas y es un id único generado por windows pero esto funciona para los objetos de las ventanas en excel , pues en el entorno de VB6 si existe la propiedad

espero que alguno posea un poco de luz, y me pueda aclarar la duda pues me es preciso obtener el hwnd para usar en esta otra api

Private Declare Function SendMessageByString& Lib "user32" Alias " _
                                          SendMessageA" (ByVal hwnd As Long,  _
                                          ByVal wMsg As Long, ByVal wParam As Long,  _
                                          ByVal lParam As String)

Un saludo

publicado

Hola Miguel:

Me alegra "verte" de nuevo.

En cuanto a la consulta, lo siento, pero el tema me viene grande.

Un saludo.

publicado

Buenas Macro gracias por el saludo y nada no te preocupes esperemos que alguno posea algo de luz, sino buscare la vuelta de tuerca por otro lado, osea cambiare la idea y buscare otras opciones

Un saludo

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.