我正在尝试构建一个需要在 PC 运行时锁定对 PC 的访问的应用程序。我需要让应用程序以全屏模式运行在最顶层,并确保 alt-tabbing 不允许访问其他应用程序或任务栏。
到目前为止,我已经设置了 TopMost = true、WindowStyle = WindowStyle.None 和 WindowState = WindowState.Maximized,它们实现了我需要的大部分功能,但我仍然遇到任务栏可见的实例。我已尝试在窗口上实现 LostFocus 行为,但这似乎没有提供我需要的行为。
任何人都可以指出我需要实现此行为的方向吗?
附加信息
不幸的是,这个项目的性质决定了我们无法更改客户端机器,而且它们运行的是 XP、Vista 和 Win7 的混合版本。这些 PC 不归我们所有,但将用于以尽可能安全的方式交付内容。 PC 的所有者知道运行该软件的限制,并且很高兴他们在我们的应用程序执行期间被“锁定”,但他们不能以其他方式改变。
其他方式
HakonB提到了 Scott Hanselman 的 BabySmash 应用程序,所以我开始寻找他处理这种情况的方法。正如 HakonB 所说,这不是处理失去焦点的最干净的方法,但它似乎有效,或者至少在我找到更好的解决方案之前应该有效。他使用每秒触发一次的计时器,并触发对 user32.dll 的 SetForegroundWindow(IntPtr hWnd) 方法的调用以获取焦点,无论它是否具有焦点。感谢 HakonB 的提醒!
最佳答案
看看 Scott Hanselman 的 BabySmash。您可以在 BabySmash 找到该站点
他有几个博客条目描述了他制作应用程序的工作。它在信息亭模式下提供对婴儿安全的应用程序。
您可以在 Codeplex 上找到该项目
关于c# - 信息亭模式下的 WPF - 任务栏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1808505/