Visual Basic - Click en la pantalla

Life is soft - evento anual de software empresarial
   
Vista:

Click en la pantalla

Publicado por jose josehernndz@gmail.com (5 intervenciones) el 20/10/2011 11:49:20
Buenos dias
Mi problema es el siguiente
Tengo una aplicacion que esta en primer plano con "SetWindowPos"
con ella interactuo con una aplicacion externa enviandole pulsaciones de teclas,
el problema es que actualmente estoy activando la aplicacion con "SetForegroundWindow" y si le evia la pulsacion de teclas, pero hace un efecto intermitente con la aplicacion es decir cuando hago click en mi aplicacion, como es normal captura el foco de mi aplicacion y la aplicacion externa queda inactiva.
Eso es lo que quiero evitar, porque al perder el foco de la aplicacion externa no continua por el lugar donde estaba situado.
Lo que he estado intentando hacer, sin encontrar como es lo siguiente:
.Poner mi aplicacion desactivada para que no coja ningun evento del usuario y por lo tanto mantenga siempre el foco con la aplicacion externa (no hay problema es un atributo del formulario)
.capturar un click en el la pantalla y averiguar las coordenadas del click
-se como averiguar la posicion del formulario en la pantalla y apartir de hay podria averiguar en que zona del formulario se ha pulsado y con un temporizador mandar la pulsacion
-lo que no consigo es capturar un click y sus coordenadas en la pantalla, solo encuentro informacion de hacerlos soble elementos de mi aplicacion


Esa es la solucion que estoy buscando a mi problema, pero quizas haya una solucion mas facil para detectar click en mi aplicacion sin perder el foco de otra aplicacion externa


Un saludo y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Click en la pantalla

Publicado por Christian (666 intervenciones) el 20/10/2011 17:34:06
En un modulo pone esto ....

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_LBUTTON = &H1
Public Const VK_RBUTTON = &H2
Public Const VK_MBUTTON = &H4
Public Declare Sub GetCursorPos Lib "user32" (lpPoint As POINTAPI)
Public Type POINTAPI
x As Long
Y As Long
End Type

Y ahora dentro de un timer en un formulario esto ...

Private Sub Timer1_Timer()
Dim z As POINTAPI
Call GetCursorPos(z)
If GetAsyncKeyState(VK_LBUTTON) <> 0 Then
Debug.Print "Boton izquierdo pulsado"
Debug.Print z.x
Debug.Print z.Y
End If
If GetAsyncKeyState(VK_RBUTTON) <> 0 Then
Debug.Print "Boton derecho pulsado"
Debug.Print z.x
Debug.Print z.Y
End If
If GetAsyncKeyState(VK_MBUTTON) <> 0 Then
Debug.Print "Boton del medio pulsado"
Debug.Print z.x
Debug.Print z.Y
End If
End Sub

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

Por otro lado te invito a que pase por una pagina que tengo algo viejita y veas el control winsock, quizas podes plantear una solucion a tu aplicacion desde este punto.
"Crear una aplicacion de conversacion"

http://vbcmc.5u.com/Controles/ctrl_Winsock.html


podrias hacer que una aplicacion mande una orden , y la aplicacion que esta "escuchando" interprete eso y la ejecute, evitando de esta manera simular click y otros eventos.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Click en la pantalla

Publicado por jose (5 intervenciones) el 24/10/2011 16:36:15
Buenos dias,
Ok gracias, ya tenia esa solucion, y detecto el lugar donfe pulso controlando la posicion de la aplicacion, pero el problema que me queda es que la aplicacion mia no coja nunca el foco, es decir que quede cono si fuede una pengatina en la pantalla para únicamente utilzarla de referencia, he probado con la propiedad enabled del formulario e incluso intentando interrumpir el click con "keybd_event" pero no lo consigo


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar