Мониторинг изменения состояния панели задач Windows с помощью win32

0

Окружающая среда:

Windows 7

Visual Studio (2008) C++ (нет.NET)

Короткая и сладкая цель:

Убедитесь, что панель задач Windows никогда не отображается.

Детали:

Я хотел бы иметь возможность регистрироваться для события Window ABN_STATECHANGE, и если событие запускается, отключите и скройте панель задач.

Я могу сделать последнее довольно легко:

CWnd *Wnd;
Wnd = CWnd::FindWindow("Shell_TrayWnd", NULL);

Wnd -> ShowWindow(SW_HIDE);
Wnd -> EnableWindow(false);

Однако я не уверен, как захватить событие изменения состояния панели задач с помощью win32. Note-- Я не могу использовать.NET framework. Должен ли я сделать это через CALLBACK WindowProc? Я действительно не знаю, с чего начать.

Любая помощь будет принята с благодарностью.

  • 0
    Приложения должны разрешать пользователю доступ к панели задач. В противном случае пользователь попадает в ловушку.
  • 0
    Да, цель состоит в том, чтобы пользователи не попадали на панель задач и не задерживали их. Мы работаем в довольно уникальной среде, и пользователь должен быть заблокирован в нашем приложении до его закрытия.
Показать ещё 1 комментарий
Теги:
visual-c++

2 ответа

0

Существует множество инструментов, которые позволяют заменить оболочку Windows. Возможно, вам удастся выяснить, как работают эти приложения.
Здесь вы можете увидеть список альтернативных оболочек Windows.

Из того, что я видел, они заменяют explorer.exe своим собственным исполняемым файлом.
Возможно, вы сможете убить explorer.exe при запуске приложения, а затем восстановить его после выхода приложения.

Кроме того, вы можете заблокировать более безопасных пользователей, разместив в своем приложении монитор, который следит за запуском explorer.exe и убивает его. Вам придется иметь дело с другими дырами в области безопасности, такими как доступ к TaskManager или командной строке.

Это опасный подход, если ваше приложение выйдет из строя, система может стать непригодной и может потребовать жесткого силового цикла для его восстановления.

В качестве альтернативы вы можете сделать приложение полноэкранным приложением и заблокировать функции, такие как вкладка alt и ключ Windows. Вы можете сделать это просто с помощью настроек главного окна WindowState для максимизации, TopMost - true и WindowStyle - никому. Затем обработка нажатий клавиш на низком уровне. Это будет охватывать панель задач Windows и предотвращать доступ пользователя к ней до выхода из приложения.

0

Это уведомление отправляется в приложения. Вы регистрируетесь как один, вызывая SHAppBarMessage с опцией ABM_NEW.

  • 0
    Хмм ладно - после прочтения больше о панелях приложений, кажется, что это не то же самое, что панель задач Windows, это правильно? Существует ли событие Windows для отслеживания видимости панели задач Windows?
  • 0
    Я не уверен, что вы подразумеваете под Windows Event. Панели приложений уведомляются о положении и внешнем виде панели задач, поскольку им часто требуется координировать действия друг с другом. Если вы хотите эти уведомления, вам нужно зарегистрировать свое окно как панель приложений (оно не должно быть фактически видимым). Я не знаю ни о каком другом источнике этой информации.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню