Cześć mam problem, chcialem stworzyć program ktory wykrywa kolor kilku pikseli w grze i odpowiednie przyciski naciska. Udalo mi sie napisac juz kod ktory weryfikuje które przyciski mają być wcisniete ale nie potrafię sprawic żeby automatycznie zostały wcisniete. Gra to mta czyli directx i za pewne to jest problemem.

#include <iostream>
#include <Windows.h>
#include <Winuser.h>
#include <chrono>
#include <thread>
#include <dinput.h>
#include <map>
#include <dinput.h>


void pressKey(CHAR keyParam) {
    SHORT key;
    UINT mappedkey;
    INPUT input = { 0 };
    key = VkKeyScan(keyParam);
    mappedkey = MapVirtualKey(LOBYTE(key), 0);
    input.type = INPUT_KEYBOARD;
    input.ki.dwFlags = KEYEVENTF_SCANCODE;
    input.ki.wScan = mappedkey;
    SendInput(1, &input, sizeof(input));
    Sleep(10);
    input.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
    SendInput(1, &input, sizeof(input));
}


int main()
{
    char keyq = 0x51;
    int click=0;
    while (true) {
        // window
        LPCWSTR window_title = L"MTA: San Andreas";
            HWND hWND = FindWindow(NULL, window_title);
            while (hWND == NULL) {
                hWND = FindWindow(NULL, window_title);
                std::cout << "start game!" << std::endl;
                Sleep(1000);
            }

            HDC hDC = GetDC(hWND);
            COLORREF color1;
            COLORREF color2;
            COLORREF color3;
            COLORREF letter1;
            COLORREF letter2;
            COLORREF letter3;
            color1 = GetPixel(hDC, 59, 642);
            if (color1 > 10000000 && color1 < 11000000 && click==0) {
                letter1 = GetPixel(hDC, 45, 642);
                if (letter1 > 10000000 && letter1 < 11000000) {
                    std::cout << "| Thats Q |\n";
                    //pressKey(keyq);

                    click++;
                }
                else {
                    std::cout << "| Thats E |\n";
                    click++;
                }
            }
            color2 = GetPixel(hDC, 116, 642);
            if (color2 > 10000000 && color2 < 11000000 && click == 1) {
                letter2 = GetPixel(hDC, 104, 642);
                if (letter2 > 10000000 && letter2 < 11000000) {
                    std::cout << "| Thats Q |\n";
                    click++;
                }
                else {
                    std::cout << "| Thats E |\n";
                    click++;
                }
            }
            color3 = GetPixel(hDC, 175, 642);
            if (color3 > 10000000 && color3 < 11000000 && click == 2) {
                letter3 = GetPixel(hDC, 163, 642);
                if (letter3 > 10000000 && letter3 < 11000000) {
                    std::cout << "| Thats Q |\n";
                    click=0;
                }
                else {
                    std::cout << "| Thats E |\n";
                    click=0;
                }
            }


            Sleep(100);
        if (GetAsyncKeyState(VK_NUMPAD0)) {
            return 0;
        }
    }
    return 0;
}