Um autoclicker de alto desempenho para Windows, com interface gráfica baseada em ImGui e suporte a teclas de atalho globais.
O TurboClicker é uma ferramenta escrita em C++ que permite automatizar cliques do mouse e pressionamentos de teclas com alta precisão e baixa latência. O projeto utiliza:
- Windows API para manipulação de inputs (mouse/teclado).
- DirectX 11 e ImGui para a interface gráfica.
- Threads de alta prioridade para garantir precisão milissegundo a milissegundo.
- Hooks de baixo nível para capturar inputs do usuário.
TurboClicker/
├── autoclicker.h # Classe principal do autoclicker
├── autoclicker.cpp # Implementação do autoclicker
├── input_hook.h # Classe para captura de inputs (hooks)
├── input_hook.cpp # Implementação dos hooks
├── main.cpp # Ponto de entrada (WinMain + ImGui)
└── README.md # Este arquivo
- Windows SDK (para
windows.h,d3d11.h, etc.) - ImGui (para a interface gráfica)
- DirectX 11 (para renderização)
- C++17 (para
std::atomic,std::thread, etc.)
- Instale o Visual Studio 2022 (ou superior) com suporte a C++17.
- Baixe os arquivos do ImGui e DirectX 11 (ou use um gerenciador de pacotes como vcpkg).
- Crie um projeto Windows Desktop Application no Visual Studio.
- Adicione os arquivos
.he.cppao projeto. - Configure as dependências:
- ImGui: Inclua os arquivos
imgui.h,imgui_impl_win32.h,imgui_impl_dx11.h,imgui.cpp,imgui_impl_win32.cpp,imgui_impl_dx11.cpp. - DirectX 11: Vincule as bibliotecas
d3d11.lib,dxgi.lib,d3dcompiler.lib.
- ImGui: Inclua os arquivos
- Compile em modo Release para melhor desempenho.
- O executável será gerado na pasta de saída.
Representa uma ação de input (tecla ou botão do mouse).
| Campo | Tipo | Descrição |
|---|---|---|
type |
Type |
Tipo da ação: Keyboard, Mouse ou None. |
code |
DWORD |
Código virtual da tecla (VK_*) ou botão do mouse (1=esquerdo, 2=direito, 3=meio). |
isExtended |
bool |
Indica se a tecla é estendida (ex: VK_RMENU). |
Gerencia hooks de baixo nível para capturar inputs do teclado e mouse.
| Membro | Tipo | Descrição |
|---|---|---|
kbHook |
HHOOK |
Handle do hook do teclado. |
msHook |
HHOOK |
Handle do hook do mouse. |
captureMode |
std::atomic<bool> |
Modo de captura ativo (true = próximo input será capturado). |
onCapture |
std::function<void(InputAction)> |
Callback chamado quando um input é capturado. |
| Método | Descrição |
|---|---|
Install() |
Instala os hooks de teclado e mouse. |
Uninstall() |
Remove os hooks. |
LowLevelKeyboardProc |
Callback do hook do teclado (captura teclas pressionadas). |
LowLevelMouseProc |
Callback do hook do mouse (captura cliques). |
Classe principal que gerencia o envio de inputs automatizados.
| Membro | Tipo | Descrição |
|---|---|---|
running |
std::atomic<bool> |
Indica se o autoclicker está ativo. |
repeatRateMs |
std::atomic<int> |
Intervalo entre repetições (em milissegundos). |
burstCount |
std::atomic<int> |
Número de ações por repetição. |
action |
InputAction |
Ação a ser repetida (tecla ou botão do mouse). |
holdMode |
std::atomic<bool> |
Modo "hold" (ativo enquanto a tecla de toggle estiver pressionada). |
| Método | Descrição |
|---|---|
Start() |
Inicia o autoclicker (cria uma thread de trabalho). |
Stop() |
Para o autoclicker (mas não encerra a thread). |
Shutdown() |
Encerra a thread de trabalho. |
SendInputAction() |
Envia uma ação de input (tecla ou mouse) para o sistema. |
SendBurst() |
Envia uma sequência de ações (ex: 5 cliques seguidos). |
Worker() |
Thread de trabalho que envia os inputs em loop. |
Ponto de entrada da aplicação. Inicializa:
- Janela Windows (com
WinMain). - DirectX 11 e ImGui para a interface gráfica.
- Hooks de input para captura de teclas/botões.
- Hotkey global (padrão:
F9) para ligar/desligar o autoclicker.
- Sliders para ajustar
repeatRateMseburstCount. - Botão de captura para definir a ação a ser repetida.
- Seletor de modo: Toggle (liga/desliga com uma tecla) ou Hold (ativo enquanto a tecla estiver pressionada).
- Botão INICIAR/PARAR para controle manual.
| Funcionalidade | Descrição |
|---|---|
| Autoclicker | Repete cliques do mouse ou teclas com alta precisão. |
| Modo Toggle | Liga/desliga o autoclicker com uma tecla (padrão: F9). |
| Modo Hold | Autoclicker ativo apenas enquanto a tecla de toggle estiver pressionada. |
| Captura de Input | Permite selecionar qual tecla ou botão do mouse será repetido. |
| Ajuste de Velocidade | Controle do intervalo entre repetições (1ms a 1000ms). |
| Ajuste de Burst | Número de ações por repetição (1 a 100). |
| Hotkey Personalizável | Permite alterar a tecla de toggle (ex: VK_F10). |
- Mouse: Usa
mouse_event(depreciado, mas rápido) para enviar cliques. - Teclado: Usa
SendInputpara enviar teclas (suporte a teclas estendidas). - Precisão: A thread de trabalho usa busy-wait (spin lock) para evitar atrasos causados por
Sleep.
WH_KEYBOARD_LL: Captura teclas pressionadas globalmente.WH_MOUSE_LL: Captura cliques do mouse globalmente.- Bloqueio de Input: Quando
captureModeestá ativo, o próximo input é capturado e bloqueado (não é passado para o sistema).
- Prioridade:
THREAD_PRIORITY_TIME_CRITICAL(máxima prioridade para precisão). - Loop principal:
- Verifica se
runningestá ativo. - Envia um burst de ações (ex: 5 cliques).
- Aguarda o intervalo
repeatRateMs(usando busy-wait).
- Verifica se
-
mouse_eventestá depreciado:- A Microsoft recomenda usar
SendInputpara mouse, masmouse_eventé mais rápido e simples para este caso. - Em versões futuras do Windows, pode ser removido.
- A Microsoft recomenda usar
-
Hooks Globais:
- Requer permissões de administrador para funcionar corretamente em alguns sistemas.
- Pode conflitar com outros programas que usam hooks (ex: antivírus).
-
Uso de CPU:
- O busy-wait consome CPU enquanto aguarda o intervalo. Para uso prolongado, considere otimizações.
-
Segurança:
- Este tipo de ferramenta pode ser detectado como malware por alguns antivírus (falsos positivos).
- Não use em jogos online (pode ser considerado trapaça e resultar em banimento).
Este projeto é open-source e pode ser usado livremente para fins educacionais ou pessoais. Não nos responsabilizamos pelo uso indevido.
Contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs.
- Sugerir melhorias.
- Enviar pull requests.