Autor
|
Tema: Simular Click (Leído 9,816 veces)
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
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
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
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
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Eso enviaria un click, pero no entiendo lo de "simular" una opcion seria SendMessage(WM_CLICK) + GetWindwFromPoint pero... solo funcionaria para ventanas comunes
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
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
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
arrastrar objetos no lo se si funcionaria 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
Mensajes: 145
|
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)
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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
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
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
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
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Ya encontré dicha herramienta! Se llama "Spy++" ------------------ 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: 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... ------------------ Saludos y gracias!
|
|
« Última modificación: 1 Diciembre 2011, 07:36 am por ignorantev1.1 »
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Es que yo creo que en realidad debes enviar WM_HOTKEY (debes usar LoWord y HiWord, y MakeDWord para usarlo correctamente )
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Simular click de raton
.NET (C#, VB.NET, ASP)
|
Gorky
|
7
|
12,193
|
11 Septiembre 2009, 05:01 am
por Zzombi
|
|
|
[Duda | Solucionado] Capturar evento global y simular click
.NET (C#, VB.NET, ASP)
|
Shout
|
3
|
4,051
|
13 Julio 2013, 05:22 am
por Shout
|
|
|
[Ayuda] Simular un click del mause con sendkeys vbKeyLButton
Scripting
|
Flamer
|
3
|
5,310
|
9 Marzo 2015, 20:52 pm
por Eleкtro
|
|
|
[Ayuda] Simular un click del mause
Programación Visual Basic
|
Flamer
|
3
|
2,882
|
11 Marzo 2015, 05:49 am
por Flamer
|
|
|
C# - Simular Click en otra aplicacion
.NET (C#, VB.NET, ASP)
|
NOIS
|
1
|
4,459
|
10 Mayo 2016, 21:10 pm
por Eleкtro
|
|