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)
| | | | |-+  Duda con la Api, Pulsar en boton de una aplicacion externa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con la Api, Pulsar en boton de una aplicacion externa  (Leído 3,112 veces)
QBBD

Desconectado Desconectado

Mensajes: 1


No es Hacerlo, Es saberlo Hacer. ATT QBBD


Ver Perfil
Duda con la Api, Pulsar en boton de una aplicacion externa
« en: 28 Enero 2013, 02:18 am »

Hola a todos, un Saludo de Mi parte, Bueno resulta que tengo una aplicacion externa  que contiene Checkbox y Command(quiero manejar el programa externo).

Tengo un codigo que si me funciona para marca y desmarcar los checkbok, pero para pulsar el comannd no me va.
aca el codigo que tengo...

Código:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
    Private Const BM_CLICK = &HF5
       
Private Sub Command1_Click()
       Dim vPadre As Long
       Dim vHijo1 As Long
     
       vPadre = FindWindow("#32770", "Game Emulator V7.0") 'Ventana a ejecutar (Class = #32770)(Caption=Ejecutar)
       vHijo1 = FindWindowEx(vPadre, 0&, "Button", "Belly Panel") 'Boton (Class=Button)(Caption= Aceptar)
     
       Call SendMessage(vHijo1, BM_CLICK, 0, vbNullString)
End Sub

Private Sub Command2_Click()
       Dim vPadre As Long
       Dim vHijo1 As Long
     
       vPadre = FindWindow("#32770", "Game Emulator V7.0") 'Ventana a ejecutar (Class = #32770)(Caption=Ejecutar)
       vHijo1 = FindWindowEx(vPadre, 0&, "Button", "Audit") 'Boton (Class=Button)(Caption= Aceptar)
     
       Call SendMessage(vHijo1, BM_CLICK, 0, vbNullString)
End Sub

Private Sub Command3_Click()
'ESTE Command ES EL QUE SE SUPONE QUE DEBERIA PULSAR EL BOTON DE LA APLICACION EXTERNA
       Dim vPadre As Long
       Dim vHijo1 As Long
     
       vPadre = FindWindow("#32770", "Game Emulator V7.0") 'Ventana a ejecutar (Class = #32770)(Caption=Ejecutar)
       vHijo1 = FindWindowEx(vPadre, 0&, "Button", "Play 9") 'Boton (Class=Button)(Caption= Aceptar)
     
       Call SendMessage(vHijo1, BM_CLICK, 0, vbNullString)
End Sub


En línea

Un fracaso no siempre es un error. El verdadero error es dejar de intentarlo.
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: Duda con la Api, Pulsar en boton de una aplicacion externa
« Respuesta #1 en: 28 Enero 2013, 13:58 pm »

Igual el botón no está en ese nivel. :rolleyes: Me explico:
FindWindowEx() te saca el hwnd de un objeto contenido en el primer nivel de Game Emulator V7.0.
Seguramente ese botón no se encuentre en exactamente ahí.
Yo creo que si sacas el hwnd del botón con el Spy++ haces un GetParent() no coincide con el hwnd de Game Emulator V7.0.
Posible solución: api EnumChildWindows().

¡Suerte! ;)

DoEvents! :P


En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: Duda con la Api, Pulsar en boton de una aplicacion externa
« Respuesta #2 en: 28 Enero 2013, 16:15 pm »

me hice esto rapidito debería funcionar bien.


Código
  1. 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
  2. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  3. Private Declare Function SendMessage_Long Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef LParam As Long) As Long
  4. Private Const WM_LBUTTONDOWN  As Long = &H201
  5. Private Const WM_LBUTTONUP    As Long = &H202
  6. Private Const WM_KEYUP        As Long = &H101
  7. Private Const WM_KEYDOWN      As Long = &H100
  8. Private Const VK_SPACE    As Long = &H20
  9.  
  10. Private Sub Command1_Click()
  11. Dim bwnd As Long
  12. Dim wwnd As Long
  13. wwnd = FindWindow(vbNullString, "Form1") ' titulo de tu ventana
  14. bwnd = FindWindowEx(wwnd, ByVal 0&, "ThunderRT6CommandButton", "Command1") 'nombre de la clase y nombre del boton
  15. WindowAPI_Click (bwnd)
  16. End Sub
  17. 'funcion click
  18. Public Sub WindowAPI_Click(ByVal hwnd As Long)
  19. Dim retVal As Long
  20. retVal = SendMessage_Long(hwnd, WM_LBUTTONDOWN, 0&, ByVal 0&)
  21. retVal = SendMessage_Long(hwnd, WM_LBUTTONDOWN, 0&, ByVal 0&)
  22. retVal = SendMessage_Long(hwnd, WM_KEYUP, VK_SPACE, ByVal 0&)
  23. retVal = SendMessage_Long(hwnd, WM_LBUTTONUP, 0&, ByVal 0&)
  24. End Sub
  25.  
  26.  

saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Abrir una archivo o carpeta al pulsar un botón
Programación Visual Basic
jamato 7 8,645 Último mensaje 19 Junio 2005, 00:02 am
por {_The_Alwar_}
Ejecutar boton al pulsar enter...
Programación Visual Basic
BenRu 5 9,815 Último mensaje 28 Enero 2006, 00:05 am
por sch3m4
¿ Se puede pulsar un botón del formulario ? « 1 2 »
Programación Visual Basic
Pure Ice 17 7,021 Último mensaje 9 Septiembre 2010, 00:50 am
por Petro_Boca
Arrancar Windows 7 al pulsar un boton en el teclado. « 1 2 »
Windows
chocola 11 18,102 Último mensaje 29 Diciembre 2011, 04:14 am
por dato000
Porqué cuando peleas en PS3 te dice qué botón pulsar?
Juegos y Consolas
nichihack 7 7,220 Último mensaje 7 Junio 2014, 11:20 am
por -- KiLiaN --
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines