Создать blackoverlay или отключить монитор

274
Alex Kipper

Часть упражнения, которое я создаю, чтобы использовать ПК без монитора (я имею в виду только использование клавиатуры и мыши и наизусть зная, какие кнопки нажимать), требует как-то его отключить и позволить ученику остановить процесс, который это создал. черный наложение или активация сценария, который снова включает монитор.

Я попытался использовать SendMessage в winapi, но он только переводит монитор в спящий режим, что отключает любое движение мыши или нажатие клавиатуры. Я использовал это:

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); 

Я обнаружил, что существует реестр, который обрабатывает обнаружение новых мониторов в окнах в HKLM> Программное обеспечение> Microsoft> TMM> UseIViewHelper. Предположительно, если вы измените его с 1 на 0, он прекратит обнаруживать новые мониторы, но, похоже, не будет работать (или, по крайней мере, для моего понимания).

Я попытался использовать MultiMonitorTool от Nir Soffer, но он, кажется, не отключает основной монитор, и, поскольку у меня есть только один монитор для ПК, это совсем не помогает.

Может кто-нибудь помочь мне с идеей, как это сделать, или, может быть, какой инструмент мне следует использовать?

Спасибо

0
Вы можете нарисовать мусор (или просто черный прямоугольник) прямо в [окне рабочего стола] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633504 (v = vs.85) .aspx). Еще одна еретическая идея, которую вы можете попробовать, - это настраиваемый цветовой профиль (ICC), чтобы все было черным. PTwr 7 лет назад 0
Не могли бы вы просто нажать CRTL + ALT + DELETE и удалить процесс черного окна? Можете ли вы заставить окно рабочего стола всегда быть на переднем плане? А пользовательский цветовой профиль звучит как еретик, ха-ха! Alex Kipper 7 лет назад 0
Я попытался сделать без полей и TopMost = true в c #, который работает довольно хорошо, хотя диспетчер задач легко обходит это, а недавно использованные команды запуска отображаются поверх пустой страницы. Есть ли способ исправить это? Alex Kipper 7 лет назад 0
Постоянно рисуя прямо на рабочем столе, HWND «обходит» всегда в верхних окнах (например, в диспетчере задач), но курсор мыши все равно должен быть выше. Это лучше, чем самое верхнее окно, поскольку оно не крадет фокус у нижнего окна. PTwr 7 лет назад 0
Как можно это сделать? Я попытался создать прямоугольник и нарисовать его через некоторое время (правда), но он кажется несколько ошибочным и не блокирует все. Я чувствую, что мне не хватает знаний, которые я не могу найти в Google. Как бы вы написали прямоугольник, который постоянно перерисовывает себя на весь экран, не крадя фокус из любого другого окна? Alex Kipper 7 лет назад 0

1 ответ на вопрос

0
Alex Kipper

Я выполнил эту задачу в конце концов, используя несколько приемов. Вот как я это сделал:

  1. Написал форму C # со свойством topmost = true, что ставит перед всеми возможными окнами, кроме диспетчера задач, меню «Пуск» и панели задач.
  2. Написал в C # функцию изменения реестра, которая включает диспетчер задач, и удалил большинство опций с экрана crtl + alt + del.
  3. Добавлена ​​функция, которая активирует скрипт bat, который активирует скрипт AHK, чтобы отключить все возможности crtl + alt + delete (я знаю, что это отвратительно).
  4. Создана функция для удаления панели задач.
  5. Чтобы изменить параметры конфиденциальности вручную, перейдите: щелкните правой кнопкой мыши панель задач> параметры> меню запуска> снимите флажки с обоих параметров в разделе конфиденциальности.

Результат:

Черное наложение без стартового меню, без crtl + alt + del, без менеджера задач, без alt tab. Все, что вы делаете, обычно регистрируется как монитор отключен. Будьте осторожны при этом, так как вы можете застрять без выбора! Я создал другое приложение, которое отменяет все эти вещи, и добавил его в ярлыки запуска, чтобы, не видя ничего, я мог слепо нажать CRTL + R и написать ярлык, который я создал, чтобы отключить все!

PM мне, если кто-то хотел бы полный исходный код.