create gui for this code : #include <windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <vector>
#include <string>

// Function to calculate affinity mask for all cores except core 0
DWORD_PTR GetAffinityMaskForAllCoresExceptCore0() {
    SYSTEM_INFO sysInfo;
    GetSystemInfo(&sysInfo);
    DWORD_PTR mask = 0;

    // Set bits for all cores except core 0
    for (DWORD i = 1; i < sysInfo.dwNumberOfProcessors; i++) {
        mask |= (1ULL << i);
    }

    return mask;
}

// Function to monitor and modify specific processes
void CheckAndModifyProcesses(const std::vector<std::wstring>& processNames) {
    DWORD_PTR affinityMask = GetAffinityMaskForAllCoresExceptCore0();
    std::cout << "Calculated affinity mask for all cores except core 0: 0x" 
              << std::hex << affinityMask << std::endl;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE) {
        std::cerr << "Failed to create process snapshot. Error: " << GetLastError() << std::endl;
        return;
    }

    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);

    if (Process32First(hSnapshot, &pe32)) {
        do {
            // Convert narrow-character `pe32.szExeFile` to wide-character
            std::wstring exeFileName(pe32.szExeFile, pe32.szExeFile + strlen(pe32.szExeFile));
            std::wcout << L"Checking process: " << exeFileName << std::endl;

            for (const auto& processName : processNames) {
                if (exeFileName == processName) {
                    std::wcout << L"Found process: " << processName << std::endl;

                    HANDLE hProcess = OpenProcess(PROCESS_SET_INFORMATION, FALSE, pe32.th32ProcessID);
                    if (hProcess) {
                        if (SetProcessAffinityMask(hProcess, affinityMask)) {
                            std::wcout << L"Modified process affinity for: " << processName 
                                       << L" to all cores except core 0" << std::endl;
                        } else {
                            std::wcerr << L"Failed to set process affinity for: " << processName 
                                       << L". Error: " << GetLastError() << std::endl;
                        }
                        CloseHandle(hProcess);
                    } else {
                        std::wcerr << L"Failed to open process: " << processName 
                                   << L". Error: " << GetLastError() << std::endl;
                    }
                }
            }
        } while (Process32Next(hSnapshot, &pe32));
    } else {
        std::cerr << "Failed to retrieve the first process. Error: " << GetLastError() << std::endl;
    }

    CloseHandle(hSnapshot);
}

int main() {
    // Processes to monitor
    std::vector<std::wstring> processNames = {
        L"MuMuPlayer.exe",
        L"MuMuVMMHeadless.exe",
        L"Ld9BoxHeadless.exe",
        L"Ld9BoxSVC.exe",
        L"dnplayer.exe",
        L"HD-Player.exe"
    };

    std::cout << "Starting process check..." << std::endl;

    CheckAndModifyProcesses(processNames);

    std::cout << "Process check complete. Press Enter to exit..." << std::endl;
    std::cin.get(); // Pause the console
    return 0;
}