【问题标题】:How to Keep User From leaving Program in Windows [closed]如何防止用户在 Windows 中离开程序 [关闭]
【发布时间】:2013-08-20 16:11:40
【问题描述】:

我正在为儿童编写一个全屏程序(使用 C# 和 WinForms),重要的是他们(用户)不能四处移动鼠标并最终进入 Windows 或桌面——也就是说,一旦老师把这个程序放到屏幕上,孩子就必须呆在那里,老师只能使用密码退出程序)。

有什么办法吗?

【问题讨论】:

  • 这种应用模式称为“kiosk模式”。仅此一项就可以帮助您进行谷歌搜索。您想拦截导致窗口切换的击键并阻止它们。您还需要一个全屏大小的无边框窗口。
  • 如果他们可以访问电源按钮,您的计划有缺陷,您可以处理表单的关闭方法
  • Windows 8 比以前更复杂,因为以前如果用户没有键盘而只有鼠标,很容易阻止他...现在有了“热”角这更困难。并且用全键盘阻止用户非常非常困难
  • 显然,Windows 8.1 正在引入一种 kiosk 模式来执行此操作(但仅适用于 TIFKAM 应用程序,不适用于一般 WinForms)
  • 最难的是禁用Alt + TAB,我觉得可以用hook来禁用,但并不容易。

标签: c# windows winforms


【解决方案1】:

您需要按照以下步骤操作

  1. 从您的应用程序中删除边框

  2. 提供自定义关闭按钮和关闭提示输入密码

  3. 拦截键盘事件,使用户无法切换到其他窗口。

【讨论】:

  • 这只是关于软件,硬件呢? OP 应该准备一些盖子盖住Power 按钮,这样孩子们就不会尝试按住它。
  • 如果他们可以访问硬件,那么无论如何都没有必要这样做......
  • OP想要解决的问题不是关闭系统,而是他希望没有其他东西可以访问。
  • “无法移动鼠标并最终进入 Windows 或桌面上的另一个程序”是问题陈述
【解决方案2】:

我知道的唯一方法是,如果您处理所有默认的 WindowMessages 并提供替代行为。

您可能必须为此更改 MessageLoop:

Implementing a Win32 message loop and creating a Window object with P/Invoke

这在另一种编程语言中可能会容易得多,例如 c++。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多