• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Как заставить код повторять нажатия. c++

Эксперт
Эксперт
Статус
Оффлайн
Регистрация
20 Май 2020
Сообщения
1,515
Реакции
457
я хочу сделать авто-кликер какой либо клавиши на клавиатуре, кто знает как это сделать на c++​
 
что-то типо того должно у тебя быть, пример дан - lets go говнокодить!
C++:
Expand Collapse Copy
#include <iostream>
#include <Windows.h>

int main()
{
    std::cout << "LALT - Start\nRALT - Exit\n";

    while (true)
    {
        if (GetAsyncKeyState(VK_LMENU)) //LALT
        {
            Sleep(50);
            mouse_event(MOUSEEVENTF_LEFTDOWN, NULL, NULL, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, NULL, NULL, 0, 0);
        }

        if (GetAsyncKeyState(VK_RMENU))
        {
            exit(0);
        }
    }
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для таких целей ахк есть:Jebaited:
 
C++:
Expand Collapse Copy
#include "windows.h"

// коды кнопок можно посмотреть вот тут: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
// а еще вместо mouse_event и keybd_event лучше юзать SendInput

static HWND hwnd;

int main() {
    hwnd = FindWindow(NULL, L"имя какого-нибудь окна");
    while (true) {
        // нажатие левой кнопки мыши при зажатом Numpud0
        if (GetAsyncKeyState(VK_NUMPAD0)) {
            mouse_event(MOUSEEVENTF_LEFTDOWN, NULL, NULL, 0, 0);
            Sleep(34); // не обязательный слип
            mouse_event(MOUSEEVENTF_LEFTUP, NULL, NULL, 0, 0);
            Sleep(50);
        }
        // нажатие кнопки F при зажатом Numpud1
        if (GetAsyncKeyState(VK_NUMPAD1)) {
            keybd_event(0x46, VkKeyScan(0x46), NULL, NULL);
            Sleep(34); // не обязательный слип
            keybd_event(0x46, VkKeyScan(0x46), KEYEVENTF_KEYUP, NULL);
            Sleep(50);
        }      
        // нажатие кнопки F в конкретном окне(в блокноте) при зажатом Numpud2
        if (GetAsyncKeyState(VK_NUMPAD2)) {
            if (hwnd) {
                PostMessage(hwnd, WM_KEYDOWN, 0x46, 0);
                Sleep(34);
                PostMessage(hwnd, WM_KEYUP, 0x46, 0);
                Sleep(50);
            }
        }
        Sleep(100);
    }
    return 0;
}
 
C++:
Expand Collapse Copy
#include "windows.h"

// коды кнопок можно посмотреть вот тут: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
// а еще вместо mouse_event и keybd_event лучше юзать SendInput

static HWND hwnd;

int main() {
    hwnd = FindWindow(NULL, L"имя какого-нибудь окна");
    while (true) {
        // нажатие левой кнопки мыши при зажатом Numpud0
        if (GetAsyncKeyState(VK_NUMPAD0)) {
            mouse_event(MOUSEEVENTF_LEFTDOWN, NULL, NULL, 0, 0);
            Sleep(34); // не обязательный слип
            mouse_event(MOUSEEVENTF_LEFTUP, NULL, NULL, 0, 0);
            Sleep(50);
        }
        // нажатие кнопки F при зажатом Numpud1
        if (GetAsyncKeyState(VK_NUMPAD1)) {
            keybd_event(0x46, VkKeyScan(0x46), NULL, NULL);
            Sleep(34); // не обязательный слип
            keybd_event(0x46, VkKeyScan(0x46), KEYEVENTF_KEYUP, NULL);
            Sleep(50);
        }    
        // нажатие кнопки F в конкретном окне(в блокноте) при зажатом Numpud2
        if (GetAsyncKeyState(VK_NUMPAD2)) {
            if (hwnd) {
                PostMessage(hwnd, WM_KEYDOWN, 0x46, 0);
                Sleep(34);
                PostMessage(hwnd, WM_KEYUP, 0x46, 0);
                Sleep(50);
            }
        }
        Sleep(100);
    }
    return 0;
}
а как сделать так что бы пока я держал например пробел он нажимался много раз, а когда я его отпуская он перестает нажиматься
 
Последнее редактирование:
а как сделать так что бы пока я держал например пробел он нажимался много раз, а когда я его отпуская он перестает нажиматься
ну он написал тебе.
меняешь в этой строчке "if (GetAsyncKeyState(VK_NUMPAD0))" на любую кнопку, то есть на VK_SPACE
 
а как сделать так что бы пока я держал например пробел он нажимался много раз, а когда я его отпуская он перестает нажиматься
C++:
Expand Collapse Copy
#include "windows.h"

int main() {
    while (true) {
        while (GetAsyncKeyState(VK_SPACE)) {
            keybd_event(VK_SPACE, VkKeyScan(VK_SPACE), NULL, NULL);
            Sleep(34);
            keybd_event(VK_SPACE, VkKeyScan(VK_SPACE), KEYEVENTF_KEYUP, NULL);
            Sleep(50); // этот слип отвечает за кд между каждой эмуляцией нажатия
        }   

        Sleep(100);
    }
    return 0;
}
 
Назад
Сверху Снизу