From 500dc18195f3d6159bfdc9ce5227448b563c5279 Mon Sep 17 00:00:00 2001 From: jazir5 <31750063+jazir555@users.noreply.github.com> Date: Thu, 3 Apr 2025 20:45:39 -0700 Subject: [PATCH] Add files via upload --- exe/BlackOverlay.exe | Bin 0 -> 18432 bytes exe/buildexe.bat | 105 ++++++++++++ exe/installexebuilddependencies.bat | 242 ++++++++++++++-------------- 3 files changed, 226 insertions(+), 121 deletions(-) create mode 100644 exe/BlackOverlay.exe create mode 100644 exe/buildexe.bat diff --git a/exe/BlackOverlay.exe b/exe/BlackOverlay.exe new file mode 100644 index 0000000000000000000000000000000000000000..9969c6e0c52f003c62945f387416079b1d4af511 GIT binary patch literal 18432 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 D2^;ze literal 0 HcmV?d00001 diff --git a/exe/buildexe.bat b/exe/buildexe.bat new file mode 100644 index 0000000..4deb5e6 --- /dev/null +++ b/exe/buildexe.bat @@ -0,0 +1,105 @@ +#ifndef UNICODE +#define UNICODE +#endif +#ifndef _UNICODE +#define _UNICODE +#endif + +#include +#include // Needed for CommandLineToArgvW + +// --- Configuration --- +const wchar_t WINDOW_TITLE[] = L"---BlackOverlayScreen---"; +const wchar_t CLASS_NAME[] = L"BlackOverlayClass"; +// --- End Configuration --- + +// Forward declaration for wWinMain if WinMain calls it +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow); + +// ADDED ANSI WinMain entry point wrapper +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { + // Get command line arguments as Unicode + int argc; + LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); + if (argv == NULL) { + // Handle error if needed, perhaps return a failure code + return -1; + } + + // Call the Unicode wWinMain function + // Note: We don't directly use lpCmdLine here, relying on GetCommandLineW instead. + // We also pass the original hInstance and nCmdShow. hPrevInstance is obsolete. + int result = wWinMain(hInstance, hPrevInstance, NULL, nCmdShow); // Pass NULL for pwCmdLine as wWinMain doesn't use it + + // Free the memory allocated by CommandLineToArgvW + LocalFree(argv); + + return result; +} + + +// Window Procedure (remains the same) +LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + switch (uMsg) { + case WM_DESTROY: + PostQuitMessage(0); + return 0; + + case WM_ERASEBKGND: + return 1; + + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hwnd, &ps); + FillRect(hdc, &ps.rcPaint, (HBRUSH)GetStockObject(BLACK_BRUSH)); + EndPaint(hwnd, &ps); + } + return 0; + } + return DefWindowProc(hwnd, uMsg, wParam, lParam); +} + +// Existing UNICODE wWinMain entry point (remains mostly the same) +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { + // NOTE: We ignore hPrevInstance and pCmdLine parameters as they are handled/obsolete + + // 1. Register the window class. + WNDCLASS wc = { }; + wc.lpfnWndProc = WndProc; + wc.hInstance = hInstance; + wc.lpszClassName = CLASS_NAME; + wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + + if (!RegisterClass(&wc)) { + return -1; + } + + // 2. Get screen dimensions for maximization + int screenWidth = GetSystemMetrics(SM_CXSCREEN); + int screenHeight = GetSystemMetrics(SM_CYSCREEN); + + // 3. Create the window. + HWND hwnd = CreateWindowEx( + WS_EX_TOPMOST, + CLASS_NAME, + WINDOW_TITLE, + WS_POPUP | WS_VISIBLE, + 0, 0, screenWidth, screenHeight, + NULL, NULL, hInstance, NULL + ); + + if (hwnd == NULL) { + return -1; + } + + // 4. Run the message loop. + MSG msg = { }; + while (GetMessage(&msg, NULL, 0, 0) > 0) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return (int)msg.wParam; +} \ No newline at end of file diff --git a/exe/installexebuilddependencies.bat b/exe/installexebuilddependencies.bat index 35fe836..bfaebe4 100644 --- a/exe/installexebuilddependencies.bat +++ b/exe/installexebuilddependencies.bat @@ -1,121 +1,121 @@ -@echo off -SETLOCAL EnableDelayedExpansion - -:: ========================================================================== -:: Script to Install C++ Build Dependencies (MinGW-w64 via Chocolatey) -:: Requires Administrator privileges and Internet connection. -:: Handles potential non-fatal warnings from choco install for mingw. -:: ========================================================================== - -:: Check for Admin privileges -echo Checking for administrative privileges... ->nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" -if '%errorlevel%' NEQ '0' ( - echo ERROR: This script requires administrative privileges. - echo Please right-click and select "Run as administrator". - pause - goto :EOF -) else ( - echo Running with administrative privileges. -) -echo. - -:: Define Variables -SET "CHOCO_INSTALL_CMD=Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" -SET "MINGW_PACKAGE=mingw" -SET "INSTALL_ATTEMPTED=0" - -:: --- Step 1: Check/Install Chocolatey --- -echo Checking for Chocolatey installation... -choco -? >nul 2>&1 -IF %ERRORLEVEL% NEQ 0 ( - echo Chocolatey not found. Attempting to install... - echo This requires PowerShell and an internet connection. - powershell -NoProfile -ExecutionPolicy Bypass -Command "%CHOCO_INSTALL_CMD%" - IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Chocolatey installation failed. Please check your internet connection - echo and PowerShell execution policy settings. Manual installation may be required. - echo Visit https://chocolatey.org/install for instructions. - pause - goto :EOF - ) ELSE ( - echo Chocolatey installation appears successful. - echo NOTE: You might need to open a NEW command prompt for choco to be fully available in PATH. - echo Running 'refreshenv' command now to attempt immediate PATH refresh... - refreshenv - REM Small delay to allow environment refresh - timeout /t 3 /nobreak >nul - ) -) ELSE ( - echo Chocolatey is already installed. -) -echo. - -:: Verify Choco again after potential install/refresh -choco -? >nul 2>&1 -IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Chocolatey command is still not available after installation attempt. - echo Please open a new Administrator command prompt and try running this script again, - echo or install MinGW manually. - pause - goto :EOF -) - -:: --- Step 2: Check/Install MinGW-w64 --- -echo Checking if '%MINGW_PACKAGE%' package is installed via Chocolatey... -choco list --local-only --exact "%MINGW_PACKAGE%" | findstr /B /C:"%MINGW_PACKAGE%" >nul 2>&1 -IF %ERRORLEVEL% NEQ 0 ( - echo '%MINGW_PACKAGE%' package not found or check failed. Attempting to install/ensure... - SET "INSTALL_ATTEMPTED=1" - choco install %MINGW_PACKAGE% --yes --force --no-progress - IF %ERRORLEVEL% NEQ 0 ( - echo WARNING: 'choco install %MINGW_PACKAGE%' finished with a non-zero exit code. - echo This might be due to non-fatal warnings (like missing old paths). - echo Continuing to verification step, but check output above carefully. - REM Do not exit here, let the g++ check be the final arbiter - ) ELSE ( - echo 'choco install %MINGW_PACKAGE%' command completed successfully (Exit Code 0). - ) - echo Running 'refreshenv' command to attempt PATH update... - refreshenv - REM Small delay to allow environment refresh - timeout /t 3 /nobreak >nul -) ELSE ( - echo '%MINGW_PACKAGE%' package appears to be already installed. -) -echo. - -:: --- Step 3: Verify g++ availability --- -echo Verifying g++ command availability... -where g++ >nul 2>&1 -IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: 'g++' command was not found in the current PATH even after installation attempt/check. - IF "!INSTALL_ATTEMPTED!"=="1" ( - echo Possible causes: - echo - The 'mingw' package installation truly failed despite reporting success internally. Check logs. - echo - The PATH environment variable hasn't updated in this session yet. - ) ELSE ( - echo Possible cause: The PATH environment variable hasn't updated in this session yet. - ) - echo. - echo IMPORTANT: Please CLOSE this window and open a NEW Administrator - echo command prompt. Then try running the build script. - pause - goto :EOF -) ELSE ( - echo Verification successful: 'g++' command found in PATH: - where g++ - echo. - echo ========================================================================== - echo Build Dependency Installation/Verification Complete! - echo ========================================================================== - echo MinGW-w64 (containing g++) should be ready. - IF "!INSTALL_ATTEMPTED!"=="1" ( - echo NOTE: If the build script still fails, ensure you run it from a NEW command prompt. - ) - echo. -) - -pause -ENDLOCAL -goto :EOF +@echo off +SETLOCAL EnableDelayedExpansion + +:: ========================================================================== +:: Script to Install C++ Build Dependencies (MinGW-w64 via Chocolatey) +:: Requires Administrator privileges and Internet connection. +:: Handles potential non-fatal warnings from choco install for mingw. +:: ========================================================================== + +:: Check for Admin privileges +echo Checking for administrative privileges... +>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" +if '%errorlevel%' NEQ '0' ( + echo ERROR: This script requires administrative privileges. + echo Please right-click and select "Run as administrator". + pause + goto :EOF +) else ( + echo Running with administrative privileges. +) +echo. + +:: Define Variables +SET "CHOCO_INSTALL_CMD=Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" +SET "MINGW_PACKAGE=mingw" +SET "INSTALL_ATTEMPTED=0" + +:: --- Step 1: Check/Install Chocolatey --- +echo Checking for Chocolatey installation... +choco -? >nul 2>&1 +IF %ERRORLEVEL% NEQ 0 ( + echo Chocolatey not found. Attempting to install... + echo This requires PowerShell and an internet connection. + powershell -NoProfile -ExecutionPolicy Bypass -Command "%CHOCO_INSTALL_CMD%" + IF %ERRORLEVEL% NEQ 0 ( + echo ERROR: Chocolatey installation failed. Please check your internet connection + echo and PowerShell execution policy settings. Manual installation may be required. + echo Visit https://chocolatey.org/install for instructions. + pause + goto :EOF + ) ELSE ( + echo Chocolatey installation appears successful. + echo NOTE: You might need to open a NEW command prompt for choco to be fully available in PATH. + echo Running 'refreshenv' command now to attempt immediate PATH refresh... + refreshenv + REM Small delay to allow environment refresh + timeout /t 3 /nobreak >nul + ) +) ELSE ( + echo Chocolatey is already installed. +) +echo. + +:: Verify Choco again after potential install/refresh +choco -? >nul 2>&1 +IF %ERRORLEVEL% NEQ 0 ( + echo ERROR: Chocolatey command is still not available after installation attempt. + echo Please open a new Administrator command prompt and try running this script again, + echo or install MinGW manually. + pause + goto :EOF +) + +:: --- Step 2: Check/Install MinGW-w64 --- +echo Checking if '%MINGW_PACKAGE%' package is installed via Chocolatey... +choco list --local-only --exact "%MINGW_PACKAGE%" | findstr /B /C:"%MINGW_PACKAGE%" >nul 2>&1 +IF %ERRORLEVEL% NEQ 0 ( + echo '%MINGW_PACKAGE%' package not found or check failed. Attempting to install/ensure... + SET "INSTALL_ATTEMPTED=1" + choco install %MINGW_PACKAGE% --yes --force --no-progress + IF %ERRORLEVEL% NEQ 0 ( + echo WARNING: 'choco install %MINGW_PACKAGE%' finished with a non-zero exit code. + echo This might be due to non-fatal warnings (like missing old paths). + echo Continuing to verification step, but check output above carefully. + REM Do not exit here, let the g++ check be the final arbiter + ) ELSE ( + echo 'choco install %MINGW_PACKAGE%' command completed successfully (Exit Code 0). + ) + echo Running 'refreshenv' command to attempt PATH update... + refreshenv + REM Small delay to allow environment refresh + timeout /t 3 /nobreak >nul +) ELSE ( + echo '%MINGW_PACKAGE%' package appears to be already installed. +) +echo. + +:: --- Step 3: Verify g++ availability --- +echo Verifying g++ command availability... +where g++ >nul 2>&1 +IF %ERRORLEVEL% NEQ 0 ( + echo ERROR: 'g++' command was not found in the current PATH even after installation attempt/check. + IF "!INSTALL_ATTEMPTED!"=="1" ( + echo Possible causes: + echo - The 'mingw' package installation truly failed despite reporting success internally. Check logs. + echo - The PATH environment variable hasn't updated in this session yet. + ) ELSE ( + echo Possible cause: The PATH environment variable hasn't updated in this session yet. + ) + echo. + echo IMPORTANT: Please CLOSE this window and open a NEW Administrator + echo command prompt. Then try running the build script. + pause + goto :EOF +) ELSE ( + echo Verification successful: 'g++' command found in PATH: + where g++ + echo. + echo ========================================================================== + echo Build Dependency Installation/Verification Complete! + echo ========================================================================== + echo MinGW-w64 (containing g++) should be ready. + IF "!INSTALL_ATTEMPTED!"=="1" ( + echo NOTE: If the build script still fails, ensure you run it from a NEW command prompt. + ) + echo. +) + +pause +ENDLOCAL +goto :EOF \ No newline at end of file