2009-11-27 2 views
4

Я пытаюсь создать приложение, которому необходимо заблокировать доступ к ПК во время его работы. Мне нужно, чтобы приложение выполнялось в верхней части экрана, в полноэкранном режиме, и убедитесь, что alt-tabbing не разрешает доступ к другим приложениям или панели задач.WPF в режиме киоска - проблемы с панелью задач

До сих пор я установил TopMost = true, WindowStyle = WindowStyle.None и WindowState = WindowState.Maximized, который достигает большей части того, что мне нужно, но я все еще получаю экземпляры, где панель задач становится видимой. Я попытался реализовать поведение LostFocus в окне, но это не похоже на то, что мне нужно.

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

Дополнительная информация
К сожалению, природа этого проекта такова, что мы не можем изменить клиентские машины, и они работают смесь XP, Vista и Win7. ПК не принадлежат нам, но должны использоваться для доставки контента как можно безопаснее. Владельцы ПК знают об ограничениях на запуск программного обеспечения и счастливы, что они будут «заблокированы» во время выполнения нашего приложения, но в противном случае они не могут быть изменены.

Другие способы
HakonB упомянул BabySmash приложение Скотта Хансельман, так что я пошел искать его пути урегулирования ситуации. Как говорит HakonB, это не самый чистый метод обработки потерянного фокуса, но, похоже, он работает или, по крайней мере, должен делать, пока я не найду лучшее решение. Он использует таймер, который срабатывает каждую секунду, и запускает вызов метода SetForegroundWindow (IntPtr hWnd) пользователя user32.dll для захвата фокуса, независимо от того, имеет ли он фокус или нет. Спасибо за хедз-ап, HakonB!

+1

Вы знаете, что есть версия киоска в ОС Windows (я думаю, что XP Embedded или что-то)? Возможно, это удовлетворит ваши потребности :) – OregonGhost

+0

TaskBar визуализируется Explorer.exe, поэтому вы можете убить это или предотвратить его запуск. Я смутно помню, что есть раздел реестра, который выбирает оболочку Windows - возможно, это можно удалить, чтобы никакая оболочка не запускалась. Вы все равно сможете запустить Explorer вручную с помощью диспетчера задач (из Ctrl-Shift-Escape или Ctrl-Alt-Delete). –

+0

К сожалению, характер этого проекта таков, что мы не можем изменить клиентские машины, и они используют сочетание XP, Vista и Win7. ПК не принадлежат нам, но должны использоваться для доставки контента как можно безопаснее. Я тоже обновлю вопрос. – ZombieSheep

ответ

4

Взгляните на BabySmash Скотта Гензельмана. Вы можете найти сайт по адресу BabySmash

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

Вы можете найти проект по Codeplex

+0

Я уже посмотрел на BabySmash и не смог вывести из кода/XAML, как он так скрывал панель задач. Я пойду перечитаю сообщения в блоге, хотя, в надежде на просветление. Благодарю. – ZombieSheep

+0

Он не достигает этого так же чисто, как мне бы это понравилось: у него есть таймер, который срабатывает один раз в секунду, и в событии таймера он уверен, что его главное окно - это окно переднего плана. Логика находится в файле Controller.cs. Кстати, мой сын ничего не сломал, разбивая :-) – HakonB