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

 

 


Tema destacado: Estamos en la red social de Mastodon


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

Desconectado Desconectado

Mensajes: 239



Ver Perfil WWW
Enviar Instrucciones a una ventana
« en: 19 Enero 2009, 07:17 am »

Una pequeña pregunta xD es posible enviar instrucciones a una ventana, sin tener que tenerla visible?


Por ejemplo, que presione un boton X de la ventana MiPrograma, pero sin tener que visualizarla para que no me interfiera con lo que hago?


En línea

el_c0c0


Desconectado Desconectado

Mensajes: 307


Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #1 en: 19 Enero 2009, 07:47 am »

Si, con el api sendmessage... buscas el hwnd del boton por ejemplo y le envias mousedown y mouseup y asi generas un click!

saludos


En línea

'-     coco
"Te voy a romper el orto"- Las hemorroides
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Enviar Instrucciones a una ventana
« Respuesta #2 en: 19 Enero 2009, 08:03 am »

pues si, como te dijeron, busca los mensajes correspondientes a los clicks y se los pasas...antes busca el hwnd con apis tambien..

saludos.
« Última modificación: 19 Enero 2009, 08:05 am por seba123neo » En línea

Xephiro

Desconectado Desconectado

Mensajes: 239



Ver Perfil WWW
Re: Enviar Instrucciones a una ventana
« Respuesta #3 en: 19 Enero 2009, 14:38 pm »

Gracias por la ayuda, pero ahora otra preguntita mas :D


Como es posible detectar los nombres de Botones, ComboBox, TextBox, ETC de las  aplicaciones que quiero manipular con sendmessage?
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #4 en: 19 Enero 2009, 15:31 pm »

'Estas 2 funciones obtienen el Caption de la ventana o control
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
    ByVal hwnd As Long, _
    ByVal lpString As String, _
    ByVal cch As Long) As Long

' Retorna la cantidad de caracteres del caption de la ventana

Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long


Código:

Option Explicit

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal Hwnd As Long) As Long

Private Sub Form_Load()
Me.Caption = "Nombre de ventanas o controles"
End Sub

Private Sub Command1_Click()
Dim nombre As String
nombre = String(GetWindowTextLength(Me.Hwnd), Chr$(0))
Call GetWindowText(Me.Hwnd, nombre, 100)
MsgBox nombre
End Sub


Saludos
« Última modificación: 19 Enero 2009, 15:55 pm por Dessa » En línea

Adrian Desanti
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #5 en: 19 Enero 2009, 15:57 pm »

Para obtener el tipo de control no se usa GetWindowText, sino GetClassName...

Ejemplo:
Código
  1. Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
  2.  
  3. Private Function GetWinClassName(ByVal hwnd As Long) As String
  4.    Dim lLength         As Long
  5.  
  6.    'Creamos el buffer
  7.    GetWinClassName = String$(260, Chr$(0))
  8.    'Llamamos al API
  9.    lLength = GetClassName(hwnd, GetWinClassName, Len(GetWinClassName))
  10.    'Recortamos el buffer
  11.    GetWinClassName = Left$(GetWinClassName, lLength)
  12. End Function
En caso de ser un TreeView el resultado es: SysTreeView32
Si es un ListView: SysListView32
Si es un boton: Button

Y otros muchos mas....

Saludos ;D
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #6 en: 19 Enero 2009, 16:03 pm »

Gracias por la ayuda, pero ahora otra preguntita mas :D


Como es posible detectar los nombres de Botones, ComboBox, TextBox, ETC de las  aplicaciones que quiero manipular con sendmessage?

Karcrack , quiere saber el nombre de los controles, no la clase

GetWindowText, no GetClassName
En línea

Adrian Desanti
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #7 en: 19 Enero 2009, 16:15 pm »

Código:

Option Explicit

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI: x As Long: y As Long: End Type

Private Sub Form_Load(): Timer1.Interval = 100: End Sub

Private Sub Timer1_Timer()

Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, &H2 Or &H1)

Dim Cor As POINTAPI: Dim retorno As Long: retorno = GetCursorPos(Cor)
Dim Handle As Long: Handle = WindowFromPoint(Cor.x, Cor.y)

Dim nombre As String: nombre = String(GetWindowTextLength(Handle), Chr$(0))
Call GetWindowText(Handle, nombre, 100)

Dim ClassName As String: ClassName = Space(256)
Dim ret As Long: ret = GetClassName(Handle, ClassName, 256)
ClassName = Left$(ClassName, ret)


Me.Cls: Me.Print "Nombre control: " & nombre: Me.Print "Nombre Classe: " & ClassName


End Sub




Hacktor, solo pasá el puntero del mouse por donde quieras
 ;)
« Última modificación: 19 Enero 2009, 16:17 pm por Dessa » En línea

Adrian Desanti
Xephiro

Desconectado Desconectado

Mensajes: 239



Ver Perfil WWW
Re: Enviar Instrucciones a una ventana
« Respuesta #8 en: 19 Enero 2009, 16:21 pm »

Una pregunta, pero tanto GetWindowText como GetClassName pueden tomar los datos de un programa como por ejemplo un juego o una aplicacion externa a mi programa?

lo que pasa es que quiero saber el nombre de Texbox y Botones de otra aplicacion para que con SendMessage pueda enviarle instrucciones
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Enviar Instrucciones a una ventana
« Respuesta #9 en: 19 Enero 2009, 16:38 pm »

Vamos por partes, primero FindWindows para obtener el Hwnd de la ventana, segundo FindWindowsEx para obtener el Hwnd del boton, caja de texto, etc, y tercero con este Hwnd y SendMessage mandas las intrucciones, si analisas el último codigo que te puse te puede facilitar la tarea.

Saludos

En línea

Adrian Desanti
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar datos a una ventana en remoto
Programación C/C++
WaAYa HaCK 4 2,565 Último mensaje 6 Marzo 2012, 09:02 am
por WaAYa HaCK
ventana popup depues de enviar datos
Desarrollo Web
itsukisekaiakiba 0 1,626 Último mensaje 5 Diciembre 2012, 00:04 am
por itsukisekaiakiba
Enviar eventos a una ventana oculta con SW_HIDE
Programación C/C++
patilanz 0 1,139 Último mensaje 23 Septiembre 2015, 07:49 am
por patilanz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines