elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Obtener el identificador de una segunda ventana hija
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener el identificador de una segunda ventana hija  (Leído 2,500 veces)
lobo3072

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Obtener el identificador de una segunda ventana hija
« en: 12 Julio 2013, 00:44 am »

hola
mi problema es el siguiente esto armando una aplicación en visual basic para controlar otro programa ccleaner y para eso necesito enviar un clic al botón analizar del ccleaner para eso uso hWndMain = FindWindow("PiriformCCleaner", "Piriform CCleaner")para obtener el identificador de la ventana padre del programa, el problema surge cuando necesito obtener el identificador de la segunda ventana hija que sería "#32770 (Cuadro de diálogo)" (FindWindowEx no me serviría por que iría a la primer ventana hija ósea que iría a "ScrollBar") una vez encontrado el identificador de la segunda ventana hija, tendría que buscar dentro de la misma  el identificador de la ventana "&Analizar" una vez encontrado el mismo utilizaría SendMessage(vHijo1, BM_CLICK, 0, vbNullString)para enviar el clic al botón.
Ya he probado utilizando GetWindow(hWndMain, GW_CHILD), GetWindow(hWndMain GW_HWNDNEXT), GetNextWindow, EnumChildWindows pero sin ningún resultado útil.

Agradezco cualquier información que puedan darme.

pd: quise insertar en el foro una imagen del spy++ para que se entienda mejor la pregunta pero no pude, como se hace?


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Obtener el identificador de una segunda ventana hija
« Respuesta #1 en: 12 Julio 2013, 03:25 am »

sube la imagine a un hosting de imagenees (tinypic, i.elhacker.net por ejemplo) y pega el link presionando en el boton cuando contestes



No te sirve el ccleaner en modo consola?  :xD



Seguro que con FindWindowEx no funciona? (encontrando en cascada como en el Spy++)


En línea

lobo3072

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Obtener el identificador de una segunda ventana hija
« Respuesta #2 en: 12 Julio 2013, 04:20 am »

Hola raul338  gracias por contestar tan rápido, creo que ya entendí como colocar una imagen en el foro. Bueno con respecto al ccleaner es un programa X que elegí para hacer la pregunta, mi verdadera intención es hacer una aplicación que instale setups en forma totalmente automáticamente ósea que aparezca un formulario con varios checkboxs de cada uno de los programas, uno selecciona los programas que quiere instalar aprieta un botón y este instala uno tras otro, para eso tengo que ser capaz de acceder a todas las ventanas de cada uno de los setups e ir enviando clic a cada uno de los botones de los mismos y FindWindowEx sirve en los casos en los que necesito el identificador de la primer ventana hija, pero no me sirve para la segunda ventana hija, porque FindWindowEx siempre va a la primera. Una vez que pueda enviarle clic al botón analizar de ccleaner aplicaría lo mismo para el verdadero proyecto.

Bueno acá les dejo la imagen para que entiendan mejor a donde quiero ir.



Salu2
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Obtener el identificador de una segunda ventana hija
« Respuesta #3 en: 12 Julio 2013, 04:27 am »

Código:

Option Explicit


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 Sub Command1_Click()

Dim hWndMain As Long
Dim hWndChild As Long
Dim hWndAnalizar As Long

hWndMain = FindWindow("PiriformCCleaner", "Piriform CCleaner")


If hWndMain = 0 Then
  MsgBox "Ccleaner sin Ejecutar"
Else
  hWndChild = FindWindowEx(hWndMain, 0, "#32770", vbNullString)
  hWndAnalizar = FindWindowEx(hWndChild, 0, "Button", "&Analizar")

  If hWndAnalizar = 0 Then
    MsgBox "La Opcion Limpiador no está Seleccionada"
  Else
    MsgBox hWndAnalizar
  End If
End If

End Sub



« Última modificación: 12 Julio 2013, 04:33 am por Dessa » En línea

Adrian Desanti
lobo3072

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Obtener el identificador de una segunda ventana hija
« Respuesta #4 en: 13 Julio 2013, 00:26 am »

Hola ,bueno quería comentarles que ya probé con el código que me facilito Dessa y pude solucionar mi problema, yo había hecho algo parecido a eso pero estaba utilizando mal FindWindowEx eso sumado a que interprete mal msdn de Microsoft sobre FindWindowEx eso causo mi confusión, muchísimas gracias a todos por ayudarme con este pequeño problema.
Salu2
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines