Ayuda SendMessage y Captions

Iniciado por Keyen Night, 17 Octubre 2009, 04:08 AM

0 Miembros y 1 Visitante están viendo este tema.

Keyen Night

Estoy tratando de leer el Static de una ventana de Dialog de Windows, la que dice:

No se puede tener acceso a 'xxxx'

Acceso Denegado.


Ya logre obtener el handle del dialog con:
FindWindow("#32770", "Explorador de Windows")

Y comprobando que ese fuera el hWnd usando a SendMessage par obtener el caption y asi comprobar si realmente es la ventana, entonces... uso FindWindowEx para obtener el Static interno del dialog cuya class es "Static" y retorna 0 el handle:
FindWindowEx(FindWindow("#32770", "Explorador de Windows"), 0, 0, "Static")

Que debo hacer para obtener el texto de ese Static?

Gracias.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

Hola, al parecer esta mal el FindWindowEx, el nombre de clase va en el primer parametro...aca te paso un ejemplo de lo que queres en visual basic 6, facil de pasar a .NET.

Código (vbnet) [Seleccionar]
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
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
Private Const WM_GETTEXT = &HD

Private Sub Command1_Click()
    Dim vHwndPadre As Long, vHwndHijo As Long, vHwndHijo2 As Long
    Dim vTexto As String * 256

    vHwndPadre = FindWindow("#32770", vbNullString)
    vHwndHijo = FindWindowEx(vHwndPadre, 0, "Static", vbNullString)
    vHwndHijo2 = FindWindowEx(vHwndPadre, vHwndHijo, "Static", vbNullString)

    Call SendMessage(vHwndHijo2, WM_GETTEXT, 256, vTexto)
   
    MsgBox vTexto
End Sub


lo probe con un mensaje de windows simulando un mensaje de error.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Keyen Night

Muchas gracias sirvio perfecto ^^
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...