elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:02  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Simular Click
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Simular Click  (Leído 1,292 veces)
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Simular Click
« en: 30 Noviembre 2011, 05:02 »

Bueno, pués tengo la duda que si es posible "simular" un Click en determinado punto, sin que el cursor cambie de posición o que el la aplicación que recibiría el Click, no contenga siquiera el foco... Aplicaciones externas, por supuesto...

Saludos!


En línea


RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: Simular Click
« Respuesta #1 en: 30 Noviembre 2011, 06:10 »

habeis probado con:

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dX As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

las botones:

Private Const LEFT_DOWN = &H2
Private Const LEFT_UP = &H4


En línea
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Simular Click
« Respuesta #2 en: 30 Noviembre 2011, 10:40 »

Eso enviaria un click, pero no entiendo lo de "simular" :P una opcion seria SendMessage(WM_CLICK) + GetWindwFromPoint pero... solo funcionaria para ventanas comunes :P
En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #3 en: 30 Noviembre 2011, 16:04 »

O sea, con lo de "simular" me refería que las acciones no afecten el cursor original.
Pero mi duda va mas allá: Arrastrar objetos, poscicionar el cursor en algún punto, insisto sin afectar el cursor original... ¿Funcionaría para una aplicación externa, sin foco y hasta minimizada u oculta?

Saludos!
En línea


RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: Simular Click
« Respuesta #4 en: 30 Noviembre 2011, 22:56 »

arrastrar objetos :P no lo se si funcionaria :P lo que probaria es ver si la api de arriba esta relaciona con un hook al mouse
asi si captura los movimientos de la propia api en el hook cuando detecte el click moverlo a un X lugar y asi simular el arrastre...
pero todo lo demas si...
En línea
Hasseds

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: Simular Click
« Respuesta #5 en: 1 Diciembre 2011, 01:13 »

Hola, no sé si entendí bien lo de arrastrar objetos... te dejo un ejemplo (sin optimizar) válido para xp (para W7 tenés q cambiar el nombre de clase "SciCalc" por la q corresponda)

Código:


Option Explicit

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 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()
   
    Shell "calc"
   
    Dim Hndl As Long

    Hndl = FindWindow("SciCalc", vbNullString)
    Hndl = FindWindowEx(Hndl, 0, vbNullString, "1")
   
    Call SetWindowPos(Hndl, vbNull, 1, 1, 35, 28, 0)

End Sub


En línea

Sergio Desanti
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #6 en: 1 Diciembre 2011, 03:44 »

Está perfecto carnal@s, muchas gracias, ya hice las pruebas correspondientes y todo bien.

Y ya que andamos por aquí: ¿Cómo encontrar el "nombre" o "ID" o "Qué sé yo" de un control(Textbox, botón) en una aplicación externa?, Recuerdo que yo usaba un programa que arrastraba el cursor a determinado control de culaquier aplicación y era suficiente, según esa herramienta estaba en "Visual Studio 6.0 Tools", pero no logré encontrarla... ¿Alguien sabe?

Saludos!... y repito: ¡Muchas gracias!
En línea


RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: Simular Click
« Respuesta #7 en: 1 Diciembre 2011, 04:27 »

si no me falla la memoria es con findwindowsex, obtenes primero el handle del principal luego lo volves a llamar pasando
como parametro del anterior y asi sucesivamente, pero necesitas el nombre de las clases de los controles, digamos
buscar un textbox creo que es "edit" ,y si hay dos o mas controles del mismo que buscas tenes que pasarle
el handle principal más el handle del primer control del mismo tipo
En línea
ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #8 en: 1 Diciembre 2011, 06:49 »

Ya encontré dicha herramienta!  :rolleyes:

Se llama "Spy++"  :xD

------------------

Ahora, pa ahorrar nuevos post, he decidido, sí otra vez, consultarles:

Estoy haciendo, que mediante "SendMessage", se envie cierta convinación de teclas: "Ctrl" + "A" para
ser específico.

El punto es que no me acepta la combinación de teclas:

Código
        Call SendMessage(ret, WM_KEYDOWN, ByVal &H11, ByVal 0) 'Se presiona "Ctrl"
       Call SendMessage(ret, WM_KEYDOWN, 65, ByVal 0) 'Se presiona "A"
       Call SendMessage(ret, WM_KEYUP, 65, ByVal 0) 'Se sulta "A"
       Call SendMessage(ret, WM_KEYUP, ByVal &H11, ByVal 0) 'Se suelta "Ctrl"

Sí me acepta presionar "A" o cualesquier otra tecla, y por ejemplo, me acepta "Ctrl" + "up" o "down" u otra, pero no
"Ctrl" y [Tecla del alfabeto]...

Si consideran qué es bronca de la aplicación... Ahi la dejamos... ;D

------------------

Saludos y gracias!
« Última modificación: 1 Diciembre 2011, 07:36 por ignorantev1.1 » En línea


raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Simular Click
« Respuesta #9 en: 1 Diciembre 2011, 13:23 »

Es que yo creo que en realidad debes enviar WM_HOTKEY :P

(debes usar LoWord y HiWord, y MakeDWord para usarlo correctamente :))
En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #10 en: 1 Diciembre 2011, 17:52 »

Hola @raul338, estuve investigando la manera, pasé por WM_HOTKEY, pero no me dí tinta, es que la verdad
no sé como usarlo  :-\, ¿me ayudarías con un ejemplo, por favor?

Saludos y gracias!
En línea


raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Simular Click
« Respuesta #11 en: 1 Diciembre 2011, 17:59 »

Dale una probada a ucHotKey :P en la parte de SetRules o similar
En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #12 en: 1 Diciembre 2011, 19:25 »

No puedo!  >:(

Citar
    Private Const WM_HOTKEY = &H312
        Private Const MOD_ALT = 1
        Private Const MOD_CONTROL = 2
        Private Const MOD_SHIFT = 4
        Private Const MOD_WIN = 8
       
    Private Type HotKey
        lKey As Integer
        hKey As Integer
    End Type

Ret es una aplicación Externa.

Citar
        Dim CtrlA As HotKey
        Dim Abrir As Integer
       
        Abrir = GlobalAddAtom("programaAbrir")
        CtrlA.lKey = vbKeyA
        CtrlA.hKey = &H11

        call RegisterHotKey(ret,Abrir, MOD_CONTROL, vbKeyA)
       
        Call SendMessage(ret, WM_HOTKEY, ByVal VarPtr(CtrlA), Abrir)
        Call UnregisterHotKey(ret, Abrir)
        Call GlobalDeleteAtom(Abrir)

Usé GetLastError y: "Invalid window; it belongs to other thread.", justo después de registrar el hotkey.

Pensé que sería así de sencillo  :-\

Saludos!

Jajajaja  :laugh:, Saludos!
En línea


raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Simular Click
« Respuesta #13 en: 1 Diciembre 2011, 23:24 »

:huh: no, porque usas un Tipo de estructura? cuando deben estar los 2 en un long? x'D

4 bytes (long) = 2 bytes (Integer) KeyCode + 2 bytes (Integer) Modificadores (Control / ALt / Shift)

Por eso te recomende el uso de MakeDWord

Tenes que hacer

Código
lHotKey = MakeDWord(VK_A, MOD_CONTROL)
Call SendMessage(hwnd, WM_HOTKEY, 0, ByVal lHotKey)
 
En línea

ignorantev1.1


Desconectado Desconectado

Mensajes: 424


/\ Así acabo cuando quiero programar...


Ver Perfil WWW
Re: Simular Click
« Respuesta #14 en: 2 Diciembre 2011, 00:08 »

Citar
no, porque usas un Tipo de estructura? cuando deben estar los 2 en un long? x'D
4 bytes (long) = 2 bytes (Integer) KeyCode + 2 bytes (Integer) Modificadores (Control / ALt / Shift)

 :xD, Según yo esa estructura de 2 integers, será reconocida como 1 long, compruebalo:

Citar
       
        CtrlL.hKey = vbKeyA '&H4C
        CtrlL.lKey = MOD_CONTROL '&H2
        Call CopyMemory(tHotK2, ByVal VarPtr(CtrlL), 8)

Ahora, de todas formas no me funciona... xD

Talvez sea por que es necesario registrar el HotKey, pero no sé como registralo en una ventana externa...

Saludos y gracias!

En línea


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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Simular Ip ????????
Dudas Generales
arrebato21 1 668 Último mensaje 7 Mayo 2009, 19:38
por YST
[Duda] Cual es el Valor de de Mause right click down y Mause right click up
Programación Visual Basic
agus0 2 738 Último mensaje 15 Julio 2009, 20:48
por agus0
Simular click de raton
.NET
Gorky 7 4,111 Último mensaje 11 Septiembre 2009, 05:01
por Zzombi
Simular click en otras aplicaciones
Programación Visual Basic
Noobie 1 907 Último mensaje 29 Enero 2010, 12:30
por Noobie
Simular POO en C
Programación General
Daemon Freedom 9 3,163 Último mensaje 13 Junio 2010, 05:39
por Daemon Freedom
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines