El Clicker de Ratón Más Rápido para Windows | Sitio Oficial

El clicker automático más rápido para Windows PC. 100000 clics por segundo alcanzados por Win32 SendInput() en matriz. GUI, línea de comandos, clics aleatorios y secuencias de clics de grabación/reproducción

Descarga la última versión : 2.6.2.0
( espejo ) - lee RegistroDeCambios

Github: 175 Stars given at Github , 33 Forks made at Github , 51465067 Total downloads including all the historical sites
( Gitlab )

Actualizado : Junio 11 2025

Developer's Facebook Sigue Facebook
Developer's Youtube Sigue Youtube
Developer's Tumblr Sigue Tumblr

El Clicker de Ratón Más Rápido para Windows | Tecnología

El autoclic más rápido para PC con Windows. Este es el único clicker automático que utiliza matrices en las llamadas del sistema SendInput para alcanzar la máxima velocidad de clic

Actualizado : Junio 11 2025.

A diferencia de otros clickers automáticos que usan obsoletos mouse_event() llamada del sistema desde la fuente C/C++ o SendInput() de fuente C#/.Net, El Clicker de Ratón Más Rápido para Windows utiliza arreglo SendInput() con matrices especialmente preparadas de eventos del ratón:


UINT nCntExtra = (nCnt - 1) * 2; // reserved index for DOWN, UP

for (UINT iExtra = 0; iExtra < nCntExtra; iExtra += 2)
{
    input[1 + iExtra].type = INPUT_MOUSE;

    input[1 + iExtra].mi.dx = dx;
    input[1 + iExtra].mi.dy = dy;

    input[1 + iExtra].mi.mouseData = dwData;
    input[1 + iExtra].mi.time = 0;
    input[1 + iExtra].mi.dwExtraInfo = dwExtraInfo;

    ...
}

...

UINT ret = SendInput(1 + nCntExtra, input, sizeof(INPUT));

El tamaño de las matrices se calcula cuidadosamente en función de la tasa de clics proporcionada por el usuario final. Para evitar el búfer de eventos del sistema overflow, el tiempo en Sleep() se selecciona correctamente según el tamaño de la matriz.

La GUI de la aplicación parece arcaica, pero está hecha con llamadas al sistema Win32 muy básicas. para evitar la degradación del rendimiento causada por bibliotecas de terceros de alto nivel como Qt o código administrado lento en marcos como C#/.Net. Por ejemplo, GetAsyncKeyState() se utiliza para detectar las teclas de activación presionadas por el usuario final:


if (!doToggle)
{
    if (toggleState == 0 && GetAsyncKeyState(atoi(triggerText)))
        toggleState = 1;
    ...
}
else
{
    if (toggleState == 0 && GetAsyncKeyState(atoi(triggerText)))
        toggleState = 1;
    ...
}

Otro beneficio de este enfoque es un ejecutable compacto y vinculado estáticamente sin dependencias externas.

Cuando el usuario final selecciona tasas de clic bajas, el tamaño real de la matriz de eventos del mouse en SendInput() está configurado en 1 y la cantidad de clics por segundo está regulada por el objetivo Sleep() solamente. Pero cuando el usuario final selecciona altas tasas de clics, el tamaño de la matriz se vuelve significativo. En circunstancias excepcionales, puede provocar la congelación de toda la GUI de Windows. Para evitarlo, se crea el subproceso auxiliar para escanear GetAsyncKeyState() de forma independiente para que el usuario final haya solicitado detener el clic y fuerza BlockInput() porque el búfer de eventos del mouse puede estar lleno:


DWORD WINAPI MyThreadFunction(LPVOID lpParam)
{
    while (true)
    {
        if (GetAsyncKeyState(atoi(triggerText2)))
        {
            ...
            BlockInput(TRUE);
            Sleep(100);
            BlockInput(FALSE);
            ...
            SetMsgStatus(hWnd, GetDlgCtrlID(statusText)
                , "idle");
        }

        Sleep(10);
    }

    return 0;
}

Para ser más compatible con las versiones anteriores de Windows, El Clicker de Ratón Más Rápido para Windows utiliza la API básica de Win32 para la creación de widgets. Utiliza el enfoque tradicional de Windows para volver a dibujar todos los widgets en un bucle de eventos de Windows. Para actualizar la vista de un widget en particular, se envía un evento a ese widget en el hilo principal y la llamada entrante se pasa al controlador de bucle de eventos donde se produce el redibujado real.

Primero, declaramos un WindowProc() función de devolución de llamada. En segundo lugar, registramos una clase de ventana principal con esa devolución de llamada mediante RegisterClassA. Y finalmente ingresamos un bucle infinito dentro de la función de devolución de llamada del evento.


LRESULT CALLBACK winCallBack(
    HWND hWin
    , UINT msg
    , WPARAM wp
    , LPARAM lp
    );

...

// Initializing the window class
windClass.style         = CS_HREDRAW | CS_VREDRAW;
windClass.lpfnWndProc       = winCallBack;
windClass.cbClsExtra        = 0;
windClass.cbWndExtra        = 0;
windClass.hInstance     = instanceH;
windClass.hIcon         = LoadIcon(
                            windClass.hInstance
                            , MAKEINTRESOURCE(101)
                            );
windClass.hCursor           = LoadCursor(
                            NULL
                            , IDC_ARROW
                            );
windClass.hbrBackground = (HBRUSH)GetStockObject(
                            WHITE_BRUSH
                            );
windClass.lpszClassName = "The Fastest Mouse Clicker "
                            "for Windows";

//Registering the window class
RegisterClass(&windClass);

...

LRESULT CALLBACK winCallBack(
    HWND hWin
    , UINT msg
    , WPARAM wp
    , LPARAM lp
    )
{
    HDC dc;
    PAINTSTRUCT ps;
    int local_status = 0;
    switch (msg)
    {
    case WM_COMMAND:
        switch(LOWORD(wp))
        {
        case RESET_BTN:

        ...
    ...
}

Por otro lado, para ser más compatible con las últimas versiones de Windows y el hardware más nuevo, como el profesional pantallas 4K y monitores de juegos, El ajuste del tamaño de fuente se realiza al iniciar la aplicación utilizando tanto el tamaño de fuente variable como el incrustado. alta DPI manifiesto xml.


struct _Sc
{
    int factor;
    _Sc() : factor(1)
    {
        int h, v;
        GetDesktopResolution(h, v);
        if (v > 1440)
            factor = 2;
    }
} _sc;

int Sc(int x)
{
    return x * _sc.factor;
}

...

statusText = CreateWindow(
    "Static"
    , "clicking status: idle"
    , WS_VISIBLE | WS_CHILD
    , Sc(5)
    , Sc(1)
    , Sc(410)
    , Sc(35)
    , hWnd
    , 0
    , 0
    , 0
    );

El manifiesto xml incrustado de la aplicación contiene una sección con alto reconocimiento de DPI.


  ...

<asmv3:application>
  <asmv3:windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        true
    </dpiAware>
    <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        system
    </dpiAwareness>
  </asmv3:windowsSettings>
</asmv3:application>

  ...

Hay muchos más trucos programáticos que utilicé para lograr un rendimiento, una compatibilidad y una apariencia sobresalientes. Si quieres descubrirlos, tienes que estudiar el código fuente tú mismo.

Derechos de autor (c) 2016-2025 por Masha Novedad, desarrolladora de código abierto, autora de El Clicker de Ratón Más Rápido para Windows