Jump to content

Duda sobre captura hwnd de los objetos de Userforn


Recommended Posts

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy