Нужно ограничить доступ детей к пк , но необходимо чтобы он был постоянно включен и были запущены нужные программы .
Есть идея сделать прозрачное без рамочное окно виндовс размером на весь экран ,у брать у него кнопки управления (закрыть,свернуть) убрать любую возможность зарыть окно даже через панель управления кроме как с помощь комбинации клавиш к примеру шифт +клавиша 1 или через подключения юсб шлешки на которой записан key.txt в котором находиться строчка" убрать окно". Вот то что уже получилось, но что-то идет не так с проверкой флешки и могу прикрутить недопуск закрытия окна через панель управления
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string> // Заголовок для std::string
#define ID_TIMER 1
// Глобальные переменные
HINSTANCE hInst;
HWND hWnd;
// Прототипы функций
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void ShowWindowCentered(HWND hWnd, int width, int height);
// Вычисление размеров окна по всему экрану
void GetFullScreenRect(RECT& rect) {
// Получаем размеры рабочего пространства без панели задач
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
}
int main() {
// Регистрируем класс окна
const wchar_t CLASS_NAME[] = L"MyWindowClass"; // Широкое название класса
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// Получаем размеры окна
RECT screenRect;
GetFullScreenRect(screenRect);
// Создаем окно
hWnd = CreateWindowEx(
WS_EX_TOPMOST | WS_EX_TOOLWINDOW, // Свойства окна
CLASS_NAME, // Имя класса
L"Еще не время", // Заголовок окна (широкая строка)
WS_POPUP | WS_VISIBLE, // Стиль окна
screenRect.left, screenRect.top, // Позиция окна (левый верхний угол)
screenRect.right - screenRect.left, // Ширина окна
screenRect.bottom - screenRect.top, // Высота окна
NULL, NULL, hInst, NULL // Дескрипторы
);
// Устанавливаем таймер на 1000 мс (1 секунда)
SetTimer(hWnd, ID_TIMER, 1000, NULL);
// Запускаем цикл обработки сообщений
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
void ShowWindowCentered(HWND hWnd, int width, int height) {
// Удаляем эту функцию, так как окно теперь полноэкранное
}
// Обработка сообщений окна
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KEYDOWN:
if (GetAsyncKeyState(VK_CONTROL) & 0x8000 &&
GetAsyncKeyState(VK_SHIFT) & 0x8000 &&
wParam == VK_RETURN) {
DestroyWindow(hwnd);
}
break;
case WM_TIMER: // Обработка таймера
{
std::wstring path = L"D:\\key.txt"; // Укажите букву диска вашей флешки
WIN32_FIND_DATA findFileData;
HANDLE hFind = FindFirstFile(path.c_str(), &findFileData); // Используйте wide string
if (hFind != INVALID_HANDLE_VALUE) {
std::wifstream infile(path); // Используйте wifstream для чтения широких строк
std::wstring line;
while (std::getline(infile, line)) {
if (line == L"убрать окно") { // Используйте широкие строки для сравнения
DestroyWindow(hwnd); // Закрыть окно, если текст найден
}
}
FindClose(hFind);
}
}
break;
case WM_PAINT: // Обработка перерисовки окна
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// Отрисовка текста
const wchar_t* text = L"Еще не время";
RECT rect;
GetClientRect(hwnd, &rect); // Получаем размеры области клиента
DrawText(hdc, text, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
}
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}