Cómo podemos hacer evento de clic de ratón en una cierta posición, sin mover el mouse(me refiero a que hacen que el equipo piense en una posición en la que se hace clic con el ratón) con C++

InformationsquelleAutor zoli | 2012-09-11

2 Comentarios

  1. 4

    La SendInput función de API de windows le ayudará a empezar. Eche un vistazo en el siguiente enlace para la definición del método,sus parámetros de entrada y los valores de retorno :

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs 85).aspx

    Usted puede seguir los enlaces en la página para saber más acerca de las estructuras y tipos de datos utilizados en la función.

    Actualización :
    Usted puede comenzar con algo como esto

    #include<Windows.h>
    int main()
    {
        INPUT input;
        input.type=INPUT_MOUSE;
        input.mi.dx=0;
        input.mi.dy=0;
        input.mi.dwFlags=(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP);
        input.mi.mouseData=0;
        input.mi.dwExtraInfo=NULL;
        input.mi.time=0;
        SendInput(1,&input,sizeof(INPUT));
        return 0;
    }

    Esto automáticamente mueve el ratón a la esquina superior izquierda de la pantalla y hacer un clic derecho. Ahora, si te refieres a hacer un clic en algún lugar de la pantalla sin mover el ratón, creo que no es posible el uso de SendInput(). Usted no tiene que preocuparse acerca de cómo mover el ratón como su programa va a hacerlo por sí mismo. Que es lo que el ‘MOUSEEVENTF_MOVE’ indica que el programa haga. Si no utiliza la bandera, a continuación, haga clic en el tendrá lugar en la posición actual del ratón.

    • He utilizado PostMessage(hwnd,MENEJADOR,MK_LBUTTON,MAKELPARAM(p.x, p.y)); PostMessage(hwnd,WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM(p.x, p.y)); pero clics, donde el mouse es que no haga clic en la posición en la que me dijo que haga clic en
    • el enlace que has dicho sobre los insumos vi, pero no pude encontrar cómo decir haga clic en una posición especial
    • mouse_event(MOUSEEVENTF_LEFTDOWN,813,731, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP,813,731, 0, 0); se hace clic donde está el ratón no haga clic en (813,731)
    • el método está en desuso. Usted debe evitar su uso. ¿Usted sigue los enlaces de la estructura de ENTRADA y, a continuación, el MOUSEINPUT estructura ? Me temo que tendremos que explorar y leer en la página que he publicado el enlace. Pruebe y usted tendrá éxito 🙂
    • postmessage asas 1 de los mensajes. la posición se utiliza para mover el mensaje, el ratón hacia abajo, entonces el ratón hacia arriba. Al hacer clic en un punto especificado requiere de 3 mensajes.
    • no. Sencillamente, no se puede combinar mover el botón de abajo, y un botón. Que uno debe ir primero? Dividir esto en 3 de entrada de los paquetes.

  2. 2

    Puede utilizar SendInput() la función para emular clics de ratón y pulsaciones de teclas:

    La SendInput función de las inserciones de los eventos en la ENTRADA de estructuras
    de serie en el teclado o el ratón del flujo de entrada. Estos eventos no son
    intercalados con otros de teclado o ratón eventos de entrada insertado
    por el usuario (con el teclado o el ratón) o mediante llamadas a keybd_event,
    mouse_event, o el resto de llamadas a SendInput.

    También puede utilizar SendMessage() o PostMessage() para enviar la pulsación de botón de mensaje, por ejemplo,

    SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));

    pero es menos fiable. Tenga en cuenta que de esta manera usted también puede necesitar para enviar WM_LBUTTONUP más tarde, dependiendo de la forma en que maneja los eventos de la aplicación.

    También comprobar este pregunta, la aceptó respuesta es bastante detallada.

    • También tenga en cuenta que al enviar el mensaje directamente no es fiable.
    • ¿Cómo debo decirle a la posición con la ENTRADA de estructuras sin mover el ratón
    • bien, usted probablemente sabe que ¿dónde desea, haga clic en, no?
    • sé que la posición, pero no quiero mover el ratón no para de hacer clic
    • el movimiento del ratón y los clics del ratón son independientes.
    • Usted no tiene que mover el ratón a un punto en la pantalla y, a continuación, llamar a SendInput() para realizar el clic. Supongo que se puede calcular las coordenadas del punto en el que desee realizar el clic. Si usted desea, haga clic en en la la superior de la izquierda, entonces las coordenadas son x=0,y=0. Si tu resolución de pantalla es de 1280 x 1024,por ejemplo, para realizar un clic en el centro de la pantalla, las coordenadas serán x=1280/2,y=1024/2. Usted no tiene que mover el ratón para el centro para la realización de este clic. Llamar SendInput() con los parámetros adecuados hace que para usted automáticamente.
    • sé que las coordenadas y me puede enviar la entrada, pero no sé cómo enviar la entrada en una posición determinada
    • usted no puede. Usted debe obtener la posición actual del ratón, mover el ratón a la ubicación, haga clic, haga clic en el ratón, mover el ratón a la ubicación original. Y nadie es más prudente.

Dejar respuesta

Please enter your comment!
Please enter your name here