Pregunta sobre una aplicación de c#

Iniciado por andrecid, 11 Agosto 2014, 15:59 PM

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

Eleкtro

Cita de: andrecid en 11 Agosto 2014, 20:59 PMme dice que no se existe en el contecto actual:

Copia y pega aquí el mensaje de la excepción, y comenta cual es el valor que hace saltar dicho error.








andrecid

Error   1   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   2   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   4   El nombre 'MouseEventFlags' no existe en el contexto actual   
Error   5   No se puede usar la variable local 'PosX' antes de declararla   
Error   6   No se puede usar la variable local 'PosY' antes de declararla   


aun que creo que los 2 últimos se por que es.

Eleкtro

1 a 4: Reemplaza los 'MouseEventFlags' por tus constantes como te expliqué.
5 y 6: Declara en el código las variables con nombre 'PosX' y 'PosY' antes de pretender utilizarlas.








andrecid

#13
Me da un error

Remplazo eso por esto:

private const int MOUSEEVENTF_LEFTDOWN = 2;
       private const int MOUSEEVENTF_MOVE = 2;
       private const int MOUSEEVENTF_ABSOLUTE = 2;
       private const int MOUSEEVENTF_LEFTUP = 4;


no?

Si es así me da este error
Error   1   Argumento 4: no se puede convertir de '<null>' a 'int'   



Me he dado cuando que solo sale si pongo null,null

cambie null a 0,0 y no me sale error pero sigue llevandose el raton para clikar
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 1290, 317, 0,0 );

Eleкtro

#14
Cita de: andrecid en 11 Agosto 2014, 21:10 PM

Remplazo eso por esto:

private const int MOUSEEVENTF_LEFTDOWN = 2;
       private const int MOUSEEVENTF_MOVE = 2;
       private const int MOUSEEVENTF_ABSOLUTE = 2;
       private const int MOUSEEVENTF_LEFTUP = 4;


no?

Si pero le asignaste los valores erroneos a 'MOUSEEVENTF_MOVE' y 'MOUSEEVENTF_ABSOLUTE'.

Como ya te he explicado, aquí tienes los nombres de los flags junto a sus respectivos valores: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx


Cita de: andrecid en 11 Agosto 2014, 21:10 PMError   1   Argumento 4: no se puede convertir de '<null>' a 'int'

pásale como valor '0' en lugar de 'null', o también puedes modificar/adaptar la declaración de la API.








andrecid

#15
Haber he modifcado cosas y ahora no me da error pero aun así el mouse se mueve hacia las coordenadaas.


private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
       private const int MOUSEEVENTF_MOVE = 0x0001;
       private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
       private const int MOUSEEVENTF_LEFTUP = 0x0004;


int x = Convert.ToInt16(textBox1.Text);
           int y = Convert.ToInt16(textBox2.Text);
         
           // Coordenadas del cursor
           Cursor.Position = new Point(x,y);
           mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x,y, 0, 0);
           
           mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

           int PosX = ((x * 65535) / Screen.PrimaryScreen.Bounds.Width);
           int PosY = ((y * 65535) / Screen.PrimaryScreen.Bounds.Height);
           mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,x, y, 0,0 );



Point cursor = new Point();
           GetCursorPos(out cursor);
           int x = cursor.X;
           int y = cursor.Y;

           label1.Text = x.ToString();

           label2.Text = y.ToString();
         
           if (GetAsyncKeyState(Keys.F2) == -32767)
           {
               timer1.Start();

           }
           if (GetAsyncKeyState(Keys.F3) == -32767)
           {
               timer1.Stop();
           }
           if (GetAsyncKeyState(Keys.F4) == -32767)
           {
               textBox1.Text = x.ToString();
               textBox2.Text = y.ToString();
           }
       }



Haber si puedes encontrar el problema

Tengo otro problema cuando le asigno a Move0x0001
se me va el mouse a una esquina

Eleкtro

Cita de: andrecid en 11 Agosto 2014, 21:40 PMHaber he modifcado cosas y ahora no me da error pero aun así el mouse se mueve hacia las coordenadaas.

No entiendo lo que quieres, primero insinuas que no quieres que se muevan, luego que si, y ahora parece otra vez que no.

Porfavor se preciso son tu pregunta.

Saludos








andrecid

No quiero que le mouse se mueve a las coordenadas quiero que se de click pero sin que el mouse se mueva. Cuando activo el programa el mouse automaticamnte se mueve donde el Setpoins y empieza a clikar yo quiero que clike pero sin moverse el mouse:


El del Escritorio no el hardware

Eleкtro

#18
Cita de: andrecid en 11 Agosto 2014, 22:18 PMNo quiero que le mouse se mueve a las coordenadas quiero que se de click pero sin que el mouse se mueva

Para realizar un click virtual entonces debes olvidarte de la función mouse_event.

Debes conocer el Handle del elemento al que quieres enviarle un evento del mouse, y usar la función SendMessage y/o PostMessage para postear los Messages del evento del mouse (WM_LBUTTONDOWN,  WM_LBUTTONUP) en la cola (Input queue) del programa: http://msdn.microsoft.com/en-us/library/windows/desktop/ms645607%28v=vs.85%29.aspx

No es que sea algo sencillo, se requiere bastante P/Invoking y un mínimo de conocimientos sobre IPC (Inter-process communication), y tampoco nunca lo he intentado.

Saludos








andrecid

No un click virtual no,
por ejemplo en Vb pongo los mismo codigos y el raton no se mueve pero da click.
sin embargo aqui el raton siempre se mueve dando click. ( A la zona setpoins)