presionar boton de aplicacion ajena sabiendo su hwnd clase y caption

Iniciado por rubeng, 18 Agosto 2007, 17:09 PM

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

rubeng

pues eso alguien sabe como presionar un boton de otra aplicacion? tengo su hwnd class y caption? alguna idea?
salu2

nhaalclkiemr

Pienso que tienes que utilizar la API SendMessage pero no estoy seguro
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

NekroByte


rubeng

buske al respecto por lo que se ve se hace con BM ¿ pero como es la estructura yo tengo el hwnd de la ventana donde se encuentra el boton 526962 y la clase #32770 y el  del boton hwnd: 264734 caption : &No type : button como haria para que se presione el boton no de ese msgbox? salu2
gracias

LeandroA

Hola


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202

Private Sub Click(Hwnd As Long)
lRetValue = PostMessage(Hwnd, WM_LBUTTONDOWN, ByVal CLng(0), ByVal CLng(0))
lRetValue = PostMessage(Hwnd, WM_LBUTTONUP, ByVal CLng(0), ByVal CLng(0))
End Sub

Private Sub Command1_Click()
Click Command2.Hwnd
End Sub

Private Sub Command2_Click()
Beep
End Sub



Saludos

rubeng

bien eso es para usarlo dentro de la misma aplicacion ahora com ose hace para usarlo en otra aplicacion? donde pongo el handle y eso?
salu2

LeandroA

hola el Handle o hwnd  es el ejemplo del command2 osea donde dice Command2.Hwnd pones el handle que tienes tu, el de la aplicacion externa

HaDeS, -

#7
Es facil, descargate el Ollydbg, lo instalas, y despues te metes a esta pagina http://www.openrce.org/downloads/details/104/WindowJuggler y descargas el WindowJuggler, lo metes en la carpeta de plugins del olly, sacas el olly, le das Plugins -> WindowJuggler -> WindowJuggler.
Ahi te aparece una ventana con varios titulos, Wnd Handle, Wnd Id, entre otros, el importante en este caso es el Wnd Handle.
Presionas el Shift, y llevas con el puntero del mouse hasta donde esta el boton al que le queres dar click, y en Wnd Handle aparece el handle de ese boton (El mismo window juggler trae la opcion para darle click, cerrar, mostrar, esconder, entre otros).
Te sale por ejemplo 0xB095A.

El codigo de la aplicacion en Visual
Código (vb) [Seleccionar]

'Debes agregar una caja de texto que el nombre sea Text1.text (La de por defecto)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_CLICK = &HF5

Private Sub Command1_Click()
   i = SendMessage("&H" & Text1.Text, WM_CLICK, Me.hwnd, 0)
End Sub


Ese seria el codigo, en la caja de texto en vez de meter 0xB095A, metes  B095A, tenes que quitarle el 0x
Creo que es asi como se hace :P
saludos!

rubeng

la verdad que no me funciona tiene que estar activa la ventana que contiene el boton?

HaDeS, -

Sip, si queres me pasas la aplicacion con la que estas ensayando, yo pruebo tambien, para que el codigo que publique pueda funcionar, tanto la ventana como el boton deben estar activos. Ese plugin que te dije, el WindowJuggler, te permite hacer lo que queras, tambien podes activar la ventana, activar botones, maximizar ventanas, esconderlas, entre otras.

Saludos