c# - 信息亭模式下的 WPF - 任务栏问题

标签 c# wpf kiosk

我正在尝试构建一个需要在 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/

相关文章:

google-chrome - Windows/Chrome/ATI/浏览器在多个显示器上全屏显示

windows - 从 Inno Setup 创建受限用户

C# - 每页上的 itextSharp 小计

c# - Windows Phone 8.1 (Silverlight) 中的后台代理

c# - bool dataGridComboBox 列显示是/否

wpf - 如何使用单独程序集的嵌入图像?

c# - 打包项目错误 : 'Conflicting values for resource' and 'Duplicate Entry'

c# - .NET Core 的 RavenDB 依赖问题

wpf - 无法通过WPF设置表格宽度

Android 主页按钮 长按