Добавь в код функцию что бы после запуска приложения оно сразу попадала в автозагрузку системы .



#include "dg1.h"
#include <windows.h>
#include <fstream>
#include <shlobj.h>
#include <string>
#include <codecvt>
#include <locale>


HWND hPassword1;
HWND hPassword2;

std::wstring passwordFilePath;
HWND hPasswordStrength;



int CheckPasswordStrength(const wchar_t* password)
{
    int length = wcslen(password);
    bool hasDigit = false;
    bool hasUppercase = false;
    bool hasLowercase = false;
    bool hasSpecialChar = false;

    // Проверка наличия различных типов символов
    for (int i = 0; i < length; i++)
    {
        if (isdigit(password[i]))
        {
            hasDigit = true;
        }
        else if (isupper(password[i]))
        {
            hasUppercase = true;
        }
        else if (islower(password[i]))
        {
            hasLowercase = true;
        }
        else if (!iswspace(password[i]))
        {
            hasSpecialChar = true;
        }
    }

    // Оценка сложности пароля в зависимости от присутствия различных символов и его длины
    if (length < 6 || (!hasDigit && !hasUppercase && !hasLowercase && !hasSpecialChar))
    {
        return 1; // Очень слабый пароль
    }
    else if ((length < 10 && (hasDigit || hasLowercase || hasUppercase)) || (length < 6 && hasSpecialChar))
    {
        return 2; // Средний пароль
    }
    else if (length >= 10 && (hasDigit || hasLowercase || hasUppercase) && hasSpecialChar)
    {
        return 3; // Сильный пароль
    }
    else
    {
        return 4; // Очень сильный пароль
    }
}



LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_CREATE:
    {
        // Создание окна ввода пароля
        hPassword1 = CreateWindow(TEXT("EDIT"), NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | ES_PASSWORD,
            20, 20, 300, 40, hwnd, NULL, NULL, NULL);

        // Создание окна для подтверждения пароля
        hPassword2 = CreateWindow(TEXT("EDIT"), NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | ES_PASSWORD,
            20, 80, 300, 40, hwnd, NULL, NULL, NULL);

        // Создание элемента управления для отображения сложности пароля
        hPasswordStrength = CreateWindow(TEXT("STATIC"), NULL, WS_VISIBLE | WS_CHILD | SS_ETCHEDHORZ,
            20, 140, 300, 2, hwnd, NULL, NULL, NULL);

        // Создание кнопки "Сохранить"
        CreateWindow(TEXT("BUTTON"), TEXT("Сохранить"), WS_VISIBLE | WS_CHILD,
            20, 140, 300, 40, hwnd, (HMENU)1, NULL, NULL);

        break;
    }
    case WM_COMMAND:
    {
        if (LOWORD(wParam) == 1) // Кнопка "Сохранить"
        {
            // Получение длины введенных символов первого пароля
            int length1 = GetWindowTextLengthW(hPassword1);

            // Получение длины введенных символов второго пароля
            int length2 = GetWindowTextLengthW(hPassword2);

            // Проверка на наличие пароля в полях
            if (length1 == 0 || length2 == 0)
            {
                MessageBox(hwnd, L"Введите пароль в оба поля!", L"Ошибка", MB_OK | MB_ICONERROR);
                if (length1 == 0)
                    SetFocus(hPassword1);
                else
                    SetFocus(hPassword2);
                return 0;
            }

            // Проверка на минимальную длину пароля
            if (length1 < 5 || length2 < 5)
            {
                MessageBox(hwnd, L"Пароль должен быть не короче 5 символов!", L"Ошибка", MB_OK | MB_ICONERROR);
                if (length1 < 5)
                    SetFocus(hPassword1);
                else
                    SetFocus(hPassword2);
                return 0;
            }

            // Выделение памяти для строк паролей
            wchar_t* password1 = new wchar_t[length1 + 1];
            wchar_t* password2 = new wchar_t[length2 + 1];

            // Получение введенных паролей
            GetWindowTextW(hPassword1, password1, length1 + 1);
            GetWindowTextW(hPassword2, password2, length2 + 1);

            // Проверка на сложность паролей
            int strength1 = CheckPasswordStrength(password1);
            int strength2 = CheckPasswordStrength(password2);

            // Отображение сложности паролей
            std::wstring strengthText1;
            if (strength1 == 1)
            {
                strengthText1 = L"Низкая";
            }
            else if (strength1 == 2)
            {
                strengthText1 = L"Средняя";
            }
            else
            {
                strengthText1 = L"Высокая";
            }

            std::wstring strengthText2;
            if (strength2 == 1)
            {
                strengthText2 = L"Низкая";
            }
            else if (strength2 == 2)
            {
                strengthText2 = L"Средняя";
            }
            else
            {
                strengthText2 = L"Высокая";
            }

            MessageBox(hwnd, (L"Сложность пароля : "  +  strengthText1).c_str(), L"Сложность паролей", MB_OK | MB_ICONINFORMATION);

            // Обновление текста и позиции элемента управления для отображения сложности пароля
            std::wstring strengthText = L"Сложность пароля: ";
            if (strength1 >= strength2)
            {
                strengthText += strengthText1;
            }
            else
            {
                strengthText += strengthText2;
            }
            SetWindowTextW(hPasswordStrength, strengthText.c_str());

            RECT rect;
            GetClientRect(hwnd, &rect);
            SetWindowPos(hPasswordStrength, NULL, 20, 140, rect.right - rect.left - 40, 2, SWP_NOZORDER);


            // Проверка на совпадение паролей
            if (wcscmp(password1, password2) != 0)
            {
                MessageBox(hwnd, L"Пароли не совпадают!", L"Ошибка", MB_OK | MB_ICONERROR);
                SetFocus(hPassword1);
                return 0;
            }

            // Получение пути к папке Public\Pictures
            wchar_t publicPicturesPath[MAX_PATH];
            if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_COMMON_PICTURES, NULL, 0, publicPicturesPath)))
            {
                // Создание полного пути до файла пароля
                std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
                passwordFilePath = std::wstring(publicPicturesPath) + L"\logs.txt";

                // Сохранение пароля в файл
                std::ofstream outfile(passwordFilePath, std::ios::binary);
                if (outfile.is_open())
                {
                    outfile << converter.to_bytes(password2);
                    outfile.close();
                    MessageBox(hwnd, L"Пароль сохранен!", L"Успех", MB_OK | MB_ICONINFORMATION);
                }
                else
                {
                    MessageBox(hwnd, L"Не удалось создать файл!", L"Ошибка", MB_OK | MB_ICONERROR);
                }
            }

            delete[] password1;
            delete[] password2;

            // Очистка полей ввода пароля
            SetWindowTextW(hPassword1, NULL);
            SetWindowTextW(hPassword2, NULL);
        }
        break;
    }

    case WM_PAINT:
    {
        // Рисование серого окошка
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        HBRUSH hBrush = CreateSolidBrush(RGB(192, 192, 192)); // Серый цвет
        RECT rect;
        GetClientRect(hwnd, &rect);
        RoundRect(hdc, rect.left, rect.top, rect.right, rect.bottom, 10, 10); // Закругление краев
        FillRect(hdc, &rect, hBrush);
        EndPaint(hwnd, &ps);
        break;
    }
    case WM_CLOSE:
        // Закрытие окна при нажатии на "крестик"
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        // Выход из цикла обработки сообщений
        PostQuitMessage(0);
        break;
    default:
        // Обработка остальных сообщений
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }

    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow)
{
    // Регистрация класса окна
    const wchar_t CLASS_NAME[] = L"PasswordInputWindowClass";

    WNDCLASS wc = {};
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);

    RegisterClass(&wc);

    // Создание окна
    HWND hwnd = CreateWindowEx(
        0, // Optional window styles
        CLASS_NAME, // Class name
        L"Введите пароль", // Window text
        WS_OVERLAPPEDWINDOW, // Window style

        // Position and size
        CW_USEDEFAULT, CW_USEDEFAULT, 340, 238,

        NULL, // Parent window
        NULL, // Menu
        hInstance, // Instance handle
        NULL // Additional application data
    );

    if (hwnd == NULL)
    {
        return 0;
    }

    // Отображение окна
    ShowWindow(hwnd, nCmdShow);

    // Обработка сообщений
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return static_cast<int>(msg.wParam);
}