как забиндить работу программы c++
Как привязать к кнопке на клавиатуре какое-либо действие? К примеру при нажатии на F3, начать очень быстро кликать и если повторно нажать на F3, программа перестанет быстро кликать?
Делал по этому коду:
#include <iostream>
#include <Windows.h>
using namespace std;
void menu()
{
cout << "Press 'X' to enable and 'Z' to disable autoclicker\n";
}
void clicker()
{
bool click = false; //sets click to false
while (true)
{
if (GetAsyncKeyState('X')) //if X is pressed click = true
{
click = true;
}
else if (GetAsyncKeyState('Z')) //if 'Z' is pressed click = false
{
click = false;
}
if (click == true) // if click = true it will press the mouse button down and up really fast
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(1); //you can adjust the speed of the click here
}
}
}
int main()
{
menu();
clicker();
return 0;
}
Пробовал:
void clicker() {
bool click = false;
while (true) {
if (GetAsyncKeyState('V')) {
click = true;
}
else if (GetAsyncKeyState('V')) {
click = false;
}
if (click == true) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(1);
}
}
}
Не работает, начинает без остановки кликать, а повторное нажатие V не останавливает работу, так-же пробовал поменять в этих строках V на X
if (GetAsyncKeyState('V')) {
click = true;
(Это значит когда кнопка нажата - кликер начинает работу), И нужно нажать другую, чтобы остановить, Но это совсем не то, что я задумывал
Ответы (1 шт):
Немного подправил ваш код, вот что получилось:
#include <Windows.h>
int main()
{
while (true)
{
if (GetKeyState('V'))
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
Sleep(1);
}
}
Для ваших целей лучше использовать именно GetKeyState, т. к. вам нужно сделать включение / выключение по одному нажатию. Подробнее по про GetKeyState и про GetAsyncKeyState.
Add: Так же, если вы пишете кликер для какой-либо игры, то советую поставить вам задержку между кликами, например в 5 миллисекунд, как показано ниже:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(5);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Иначе игра попросту может не засчитывать эти клики.