Program, bot klikajacy w danym przyciski na ekranie

Odpowiedz Nowy wątek
2019-06-10 16:49
0

Witam, chcialbym zapytac czy jest mozliwosc zrobienia bota do gry tak aby np co 4 sekundy "naciskal alt" a potem odpowiednia kombinacje klawiszy.
Klawisze jakie trzeba wcisnac sa pokazywane losowo np: q q q, e e e, q e q itp. A wyglada to tak:
https://i.imgur.com/ney8AL4.png
Jezeli da sie prosze o jakies nakierowanie mnie w tym temacie bo nie za bardzo ogarniam.

edytowany 2x, ostatnio: Ranxer, 2019-06-10 16:50

Pozostało 580 znaków

2019-06-10 16:59
1

Podziel sobie to na mniejsze etapy...
1) Robienie screna
2) Obciecie screena do konkretnego rozmiaru obejmujacego tylko klawisze
3) Podzielenie tego obszaru na mniejsze obszary 1 obszar per obrazek dla klawisza
4) Rozpozanie jakie klawisze maja byc nacisniete, tutaj bardzo proste, bo mozesz dopasowywac obrazki, dla kazdego klawisza
5) Nacisniecie klawiszy(tutaj WinAPI)

Pozostało 580 znaków

2019-06-10 17:16
0

Graj uczciwie. Problem solved.

a co to za różnica czy alt wciska koleś czy bot? :P - nullpt4 2019-06-10 17:23
why? Bardzo fajnie że sobie założył jakiś problem i próbuje go rozwiązać, po zrobieniu tego bota bardzo dużo wiedzy merytorycznej zyska :D - Xezolpl 2019-06-10 19:58
Nie lubię oszustów w grach i tyle. - Sarrus 2019-06-10 20:01
Nie sądzę żeby była to gra w której oszukiwanie było by dla innych uciążliwe (to nie cs że ci będzie heady strzelał same w powietrze) tylko jakiś mały clicker (pewnie singleplayer) - Xezolpl 2019-06-10 21:46

Pozostało 580 znaków

2019-06-10 17:16
0

Dobra dzieki, sprobuje cos podzialac nie za bardzo ogarniam z tym screenem ale podzialam cos. Jak ktos ma jeszcze jakies rady to mozecie pisac.

Pozostało 580 znaków

2019-06-11 00:08
0

Screenshot w WinAPI, kod z pierwszej lepszej strony WWW. Potestuj, zobacz co się dzieje, zmieniaj i jeszcze raz testuj. Jeśli chcesz coś przyjemniejszego to poszukaj jakiejś biblioteki do screenshotów albo napisz aplikację w Qt i skorzystaj z https://doc.qt.io/qt-5/qtwidgets-desktop-screenshot-example.html

Void CaptureScreen()
{
    int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
    int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
    HWND hDesktopWnd = GetDesktopWindow();
    HDC hDesktopDC = GetDC(hDesktopWnd);
    HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
    HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC, 
                            nScreenWidth, nScreenHeight);
    SelectObject(hCaptureDC,hCaptureBitmap); 
    BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,
           hDesktopDC,0,0,SRCCOPY|CAPTUREBLT); 
    SaveCapturedBitmap(hCaptureBitmap);
    SaveHBITMAPToFile(hCaptureBitmap, L"nazwaPliku.bmp");
    ReleaseDC(hDesktopWnd,hDesktopDC);
    DeleteDC(hCaptureDC);
    DeleteObject(hCaptureBitmap);
}

...

BOOL SaveHBITMAPToFile(HBITMAP hBitmap, LPCTSTR lpszFileName)
{
    HDC hDC;
    int iBits;
    WORD wBitCount;
    DWORD dwPaletteSize = 0, dwBmBitsSize = 0, dwDIBSize = 0, dwWritten = 0;
    BITMAP Bitmap0;
    BITMAPFILEHEADER bmfHdr;
    BITMAPINFOHEADER bi;
    LPBITMAPINFOHEADER lpbi;
    HANDLE fh, hDib, hPal, hOldPal2 = NULL;
    hDC = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
    iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
    DeleteDC(hDC);
    if (iBits <= 1)
        wBitCount = 1;
    else if (iBits <= 4)
        wBitCount = 4;
    else if (iBits <= 8)
        wBitCount = 8;
    else
        wBitCount = 24;
    GetObject(hBitmap, sizeof(Bitmap0), (LPSTR)&Bitmap0);
    bi.biSize = sizeof(BITMAPINFOHEADER);
    bi.biWidth = Bitmap0.bmWidth;
    bi.biHeight = -Bitmap0.bmHeight;
    bi.biPlanes = 1;
    bi.biBitCount = wBitCount;
    bi.biCompression = BI_RGB;
    bi.biSizeImage = 0;
    bi.biXPelsPerMeter = 0;
    bi.biYPelsPerMeter = 0;
    bi.biClrImportant = 0;
    bi.biClrUsed = 256;
    dwBmBitsSize = ((Bitmap0.bmWidth * wBitCount + 31) & ~31) / 8
        * Bitmap0.bmHeight;
    hDib = GlobalAlloc(GHND, dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER));
    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
    *lpbi = bi;

    hPal = GetStockObject(DEFAULT_PALETTE);
    if (hPal)
    {
        hDC = GetDC(NULL);
        hOldPal2 = SelectPalette(hDC, (HPALETTE)hPal, FALSE);
        RealizePalette(hDC);
    }

    GetDIBits(hDC, hBitmap, 0, (UINT)Bitmap0.bmHeight, (LPSTR)lpbi + sizeof(BITMAPINFOHEADER)
        + dwPaletteSize, (BITMAPINFO *)lpbi, DIB_RGB_COLORS);

    if (hOldPal2)
    {
        SelectPalette(hDC, (HPALETTE)hOldPal2, TRUE);
        RealizePalette(hDC);
        ReleaseDC(NULL, hDC);
    }

    fh = CreateFile(lpszFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);

    if (fh == INVALID_HANDLE_VALUE)
        return FALSE;

    bmfHdr.bfType = 0x4D42; // "BM"
    dwDIBSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;
    bmfHdr.bfSize = dwDIBSize;
    bmfHdr.bfReserved1 = 0;
    bmfHdr.bfReserved2 = 0;
    bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + dwPaletteSize;

    WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);

    WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);
    GlobalUnlock(hDib);
    GlobalFree(hDib);
    CloseHandle(fh);
    return TRUE;
}
edytowany 3x, ostatnio: au7h, 2019-06-11 00:24

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0