
23/12/2009, 12:53
|
| | Fecha de Ingreso: enero-2009
Mensajes: 100
Antigüedad: 16 años, 4 meses Puntos: 1 | |
Respuesta: Mover Mouse Con PictureBox Cita:
Iniciado por pkj Creo que lo que pides se saca así:
Código vb:
Ver originalPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim PosRealX As Single Dim PosRealY As Single Dim Difer As Double Difer = Screen.Width / Picture1.ScaleWidth PosRealX = X * Difer Difer = Screen.Height / Picture1.ScaleHeight PosRealY = Y * Difer End Sub
Aunque si quieres usar las coordenadas con GetCursorPos creo tienes que dividir el resultado por TwipsPerPixel:
Código vb:
Ver originalPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim PosRealX As Single Dim PosRealY As Single Dim Difer As Double Difer = Screen.Width / Picture1.ScaleWidth PosRealX = X * Difer / Screen.TwipsPerPixelX Difer = Screen.Height / Picture1.ScaleHeight PosRealY = Y * Difer / Screen.TwipsPerPixelY End Sub
Por cierto, solo sirve con PictureBox. Si usas Images te encontrarás con que no tienen propiedad ScaleHeight y ScaleWidth y no he encontrado equivalente, así que he tenido que aprender primero como escalar una imagen en un picturebox
El problema está en pinchar donde quieres sin mover el ratón.
Yo no he conseguido nada más que pinchar con el botón derecho y desplegar el menú, solo que el menú me aparece debajo del ratón, en lugar de en la ventana donde he pinchado.
Espero que tengas mas suerte. Si lo consigues cuentanos como lo has hecho.
Saludos Listo! tengo el Sig code:
Código:
Private Declare Function SetCursorPos Lib "user32.dll" _
(ByVal x As Long, ByVal y As Long) As Long
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)
Const MOUSEEVENTF_ABSOLUTE = &H8000 ' movimiento absoluto
Const MOUSEEVENTF_LEFTDOWN = &H2 ' botón izquierdo presionado
Const MOUSEEVENTF_LEFTUP = &H4 ' botón izquierdo soltado
Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' botón central presionado
Const MOUSEEVENTF_MIDDLEUP = &H40 ' botón central soltado
Const MOUSEEVENTF_MOVE = &H1 ' movimiento del mouse
Const MOUSEEVENTF_RIGHTDOWN = &H8 ' botón derecho presionado
Const MOUSEEVENTF_RIGHTUP = &H10 ' botón derecho soltado
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim PosRealX As Single
Dim PosRealY As Single
Dim Difer As Double
Difer = Screen.Width / Picture1.ScaleWidth
PosRealX = x * Difer / Screen.TwipsPerPixelX
Difer = Screen.Height / Picture1.ScaleHeight
PosRealY = y * Difer / Screen.TwipsPerPixelY
Call SetCursorPos(PosRealX, PosRealY)
If Button = 1 Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&)
ElseIf Button = 2 Then
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0&, 0&, 0&, 0&)
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0&, 0&, 0&, 0&)
End If
End Sub
Ahora supongamos que he pasado las coordenadas a un pc remoto, como comviertolas coordenadas?? |