Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScanContents.h"
- bool TakeScreenshot(std::string WindowToFind, BITMAP &bm, HBITMAP &hbmap, BITMAPINFO &bmi, HDC &hdcShot,
- HBITMAP &hbitmapOld, HWND &hwnd);
- void SetupBitmapInfo(BITMAPINFO &bmi, int bWidth, int bHeight, int bitsPerPixel);
- bool CompareColour(RGBQUAD * pPixels, int height, int width, int x, int y);
- void ScanBMP(ScanContents * scan);
- bool Aim_Bot(HWND appWnd, std::string GameWindow);
- MouseCoord CurrentMouseXY(0, 0);
- int main()
- {
- std::string GameWindow = "rgb - Windows Photo Viewer"; //Counter-Strike Source
- HWND appWnd = FindWindow(0, GameWindow.c_str());
- while(!appWnd)
- {
- system("CLS");
- HWND appWnd = FindWindow(0, GameWindow.c_str());
- std::cout << "Unable to find " << GameWindow.c_str() <<std::endl;
- Sleep(500);
- }
- POINT currentPos;
- GetCursorPos(& currentPos);
- CurrentMouseXY.X = currentPos.x;
- CurrentMouseXY.Y = currentPos.y;
- Aim_Bot(appWnd, GameWindow);
- system("Pause");
- return 0;
- }
- bool TakeScreenshot(std::string WindowToFind, BITMAP &bm, HBITMAP &hbmap, BITMAPINFO &bmi, HDC &hdcShot,
- HBITMAP &hbitmapOld, HWND &hwnd)
- {
- RECT rc;
- GetWindowRect(hwnd, &rc);
- hdcShot = CreateCompatibleDC(0);
- hbmap = CreateCompatibleBitmap(GetDC(0), rc.right - rc.left, rc.bottom - rc.top);
- SelectObject(hdcShot, hbmap);
- BitBlt(hdcShot, 0, 0, rc.right - rc.left, rc.bottom - rc.top,
- GetDC(0),rc.left,rc.top, SRCCOPY);
- if(!GetObject(hbmap, sizeof(BITMAP), (LPSTR)&bm))
- return false;
- int bitsPerPixel = bm.bmBitsPixel;
- if(bitsPerPixel != 32 || bm.bmPlanes != 1)
- return false;
- SetupBitmapInfo(bmi, bm.bmWidth, bm.bmHeight, bitsPerPixel);
- return true;
- }
- bool Aim_Bot(HWND appWnd, std::string GameWindow)
- {
- RECT rcWindow;
- GetWindowRect(appWnd, &rcWindow);
- BITMAP bm;
- HBITMAP hbmap;
- HBITMAP hbmapOld;
- BITMAPINFO bmi;
- HDC hdcShot;
- HDC hdfcScreen;
- RGBQUAD * pPixels;
- int TimeTakenScreenAndScan;
- while(true)
- {
- if(!GetAsyncKeyState('X'))
- {
- TimeTakenScreenAndScan = clock();
- if(TakeScreenshot(GameWindow, bm, hbmap, bmi, hdcShot, hbmapOld, appWnd))
- break;
- HBITMAP hbmapNew = CreateCompatibleBitmap(hdcShot, rcWindow.right - rcWindow.left, rcWindow.bottom - rcWindow.top);
- HDC hdcShotNew = CreateCompatibleDC(hdcShot);
- HBITMAP OldBmp = (HBITMAP) SelectObject(hdcShotNew, hbmapNew);
- BitBlt(hdcShotNew, 0, 0, rcWindow.right - rcWindow.left, rcWindow.bottom - rcWindow.top,
- hdcShot, 0,0, SRCCOPY);
- pPixels = new RGBQUAD[bm.bmWidth * bm.bmHeight];
- if(!pPixels)return false;
- SelectObject(hdcShotNew, OldBmp);
- if(!GetDIBits(hdcShotNew, hbmapNew, 0, bm.bmHeight, pPixels, &bmi, DIB_RGB_COLORS))
- {
- ReleaseDC(appWnd, hdcShot);
- delete[] pPixels;
- return false;
- }
- ReleaseDC(appWnd, hdcShot);
- ScanContents scanContentsMain(bm,rcWindow, pPixels);
- ScanBMP(&scanContentsMain);
- if(pPixels)
- free(pPixels);
- SelectObject(hdcShot, hbmapOld);
- DeleteObject(hbmap);
- DeleteDC(hdcShot);
- DeleteObject(hbmapNew);
- DeleteObject(OldBmp);
- DeleteDC(hdcShotNew);
- //std::cout << "out of scan, took " << clock() - TimeTakenScreenAndScan << " milliseconds" << std::endl;
- }
- }
- }
- void SetupBitmapInfo(BITMAPINFO &bmi, int bWidth, int bHeight, int bitsPerPixel)
- {
- bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bmi.bmiHeader.biWidth = bWidth;
- bmi.bmiHeader.biHeight = bHeight;
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = bitsPerPixel;
- bmi.bmiHeader.biCompression = BI_RGB;
- bmi.bmiHeader.biSizeImage = 0;
- }
- void ShootBot(int x, int y)
- {
- mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
- mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
- }
- void ScanBMP(ScanContents * scan)
- {
- for(int y = (scan ->RcWindow.bottom - scan->RcWindow.top)/4;
- y < ((scan->RcWindow.bottom - scan->RcWindow.top) - (scan->RcWindow.bottom - scan->RcWindow.top)/3.5);
- y++)
- {
- for(int x = (scan ->RcWindow.right - scan->RcWindow.left)/4;
- x < ((scan->RcWindow.right - scan->RcWindow.left) - (scan->RcWindow.right - scan->RcWindow.left)/4);
- x++)
- {
- SetCursorPos(x+scan->RcWindow.left, (y+4)+scan->RcWindow.top);
- if(CompareColour(scan-> PPixels, scan->Bm.bmHeight, scan ->Bm.bmWidth, x, y))
- {
- //SetCursorPos(x+scan->RcWindow.left, (y+4)+scan->RcWindow.top);
- POINT currentPos;
- GetCursorPos(¤tPos);
- //ShootBot(x+scan->RcWindow.left, y+scan->RcWindow.top);
- CurrentMouseXY.X = currentPos.x;
- CurrentMouseXY.Y = currentPos.y;
- return;
- }
- }
- }
- }
- bool CompareColour(RGBQUAD * pPixels, int height, int width, int x, int y)
- {
- int p = (height-y-1)*width+x;
- if((int)pPixels[p].rgbRed > 215 && (int)pPixels[p].rgbGreen < 30 && (int)pPixels[p].rgbBlue < 30)
- {
- return true;
- }
- if(GetAsyncKeyState(VK_DELETE))
- {
- exit(0);
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement