Возможно, вы сможете публиковать больше полезных вещей позже, но сейчас я могу сказать вам, что вы хотите найти в Google: "режим киоска".
Обновление - Полезные вещи (надеюсь)
Теперь, чтобы быть откровенным, любой режим киоска является более или менее взломом. Windows Mobile не предназначена для этого, и по мере того, как вы будете попадать во все более и более крайние случаи, вы обнаружите странный пробел, однако для большинства программ достаточно следующего:
Задача 1 - Закройте пользовательский интерфейс и панель задач, чтобы к ней нельзя было получить доступ:
В основной форме установите для WindowState значение Maximized и для FormBorderStyle значение None.
В старых ОС вам может понадобиться отключить саму панель задач и переместить форму поверх нее. Это достигается с помощью PInvoking:
FindWindow с аргументом "HHTaskBar" (это может зависеть от платформы, HHTaskbar работает для Pocket PC 2003) и String.Empty
[DllImport("coredll.dll", EntryPoint="FindWindowW", SetLastError=true)]
private static extern IntPtr FindWindowCE(string lpClassName, string lpWindowName);
EnableWindow с IntPtr из FindWindow и false
[DllImport("coredll.dll", SetLastError=true)]
public static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
ShowWindow с IntPtr из FindWindow и 0 (SW_HIDE)
[DllImport("coredll.dll")]
public static extern bool ShowWindow( IntPtr hwnd, int nCmdShow);
Задание 2 - Предотвращение использования жестких ключей приложения.
Вы знаете, нажмите оранжевую и левую кнопку, и он автоматически откроет Pocket Outlook.
Чтобы сделать это, я собираюсь побить ранг и рекомендовать единственный приемлемый способ сделать это - использовать недокументированный вызов Win32 API. Это совершенно стабильный вызов, и каждый день у меня работает целый ряд проектов, использующих его. Я полагаю, что в будущем обновлении мне может понадобиться изменить код, если он будет удален, так что имейте это в виду.
Вы захотите настроить низкоуровневую системную широкую клавиатуру с помощью вызова PInvoke:
[DllImport("coredll.dll")]
private static extern IntPtr SetWindowsHookEx(int idHook, HookHandlerDelegate lpfn, IntPtr hMod, uint dwThreadId);
Это достаточно сложно, и, вероятно, лучше просто указать на руководство типа , которое , чтобы объяснить теорию. Основная предпосылка состоит в том, чтобы обнаружить код клавиши раздражающих «специальных клавиш», а затем заблокировать их через крючок (т.е. не передавать их).
Если вы работаете над CF, я предлагаю также покопаться в OpenNETCF, так как считаю, что в нем уже есть глобальный KeyHook.
Как я уже говорил, это не идеально, и IIRC регулятор громкости не блокируется, и возможно, что уведомление, такое как новая беспроводная сеть, может нарушить ваш режим киоска, если вы не установите различные флаги в реестре ( сказать не делать этого :)).
Тем не менее, это не так много усилий, и этого должно быть достаточно для большинства ваших приложений.
Задание 3 - Запуск приложения с самого начала
Этот бит может немного отличаться в зависимости от устройства. Если вы хотите остаться в управляемом коде, проблема в том, что NETCF не поставляется предварительно установленным на некоторых устройствах. В большинстве случаев вы можете просто написать неуправляемый загрузчик, который находится в каталоге автозапуска (он должен быть, проверьте документы производителя), установить .NETCF, ваши приложения и затем запустить ваши приложения. Если вы не хотите запачкать руки неуправляемым кодом, то большинство производителей оборудования предлагают какую-то систему сценариев для настройки устройства по своему усмотрению. Однако они могут работать с различной степенью эффективности.