Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信息亭模式下的WPF-任务栏故障_C#_Wpf_Kiosk - Fatal编程技术网

C# 信息亭模式下的WPF-任务栏故障

C# 信息亭模式下的WPF-任务栏故障,c#,wpf,kiosk,C#,Wpf,Kiosk,我正在尝试构建一个应用程序,它需要在PC运行时锁定对它的访问。我需要让应用程序以全屏模式运行在最顶层,并确保alt tabbing不允许访问其他应用程序或任务栏 到目前为止,我已经将TopMost=true、WindowStyle=WindowStyle.None和WindowState=WindowState.Maximized设置为最大化,实现了我所需的大部分功能,但我仍然可以看到任务栏的实例。我已经尝试在窗口上实现LostFocus行为,但这似乎没有提供我需要的行为 有人能告诉我实施这种行

我正在尝试构建一个应用程序,它需要在PC运行时锁定对它的访问。我需要让应用程序以全屏模式运行在最顶层,并确保alt tabbing不允许访问其他应用程序或任务栏

到目前为止,我已经将TopMost=true、WindowStyle=WindowStyle.None和WindowState=WindowState.Maximized设置为最大化,实现了我所需的大部分功能,但我仍然可以看到任务栏的实例。我已经尝试在窗口上实现LostFocus行为,但这似乎没有提供我需要的行为

有人能告诉我实施这种行为的方向吗

其他信息

不幸的是,这个项目的本质是我们不能改变客户端机器,它们运行的是XP、Vista和Win7的混合。个人电脑不归我们所有,但用于以尽可能安全的方式交付内容。PC机的所有者知道运行软件的限制,并很高兴在我们的应用程序执行期间将其“锁定”,但它们不能被更改

其他方式

提到Scott Hanselman的BabySmash申请,所以我去寻找他处理这种情况的方法。正如HakonB所说,这不是处理失焦的最干净的方法,但它似乎有效,或者至少应该有效,直到我找到更好的解决方案。他使用一个每秒触发一次的计时器,并调用user32.dll的setforegroundindow(IntPtr hWnd)方法来获取焦点,而不管它是否具有焦点。谢谢你的提醒,哈康布

看看斯科特·汉塞尔曼的《婴儿灰》。您可以在以下网址找到该网站:

他有几篇博客文章描述了他制作应用程序的工作。它在kiosk模式下提供了一个婴儿安全应用程序


你可以在

上找到这个项目,你知道有一个Windows的信息亭版本吗(我想它是XP嵌入式的还是什么的)?也许这会满足您的需要:)任务栏由Explorer.exe呈现,因此您可以终止或阻止它启动。我模模糊糊地记得有一个注册表项选择了Windows外壳-可能这可以被删除,这样就不会启动外壳。您仍然可以使用任务管理器(通过Ctrl-Shift Escape或Ctrl-Alt Delete菜单)手动启动资源管理器。不幸的是,此项目的性质是我们无法更改客户端计算机,并且它们同时运行XP、Vista和Win7。个人电脑不归我们所有,但用于以尽可能安全的方式交付内容。我也会更新这个问题。我已经看过Babymash了,但还不能从代码/XAML推断出他是如何以这种方式隐藏任务栏的。不过,我会去重读这些博客文章,希望能有所启发。谢谢。他并没有像我希望的那样干净利落:他有一个计时器,每秒启动一次,在计时器事件中,他确保他的主窗口是前景窗口。逻辑在Controller.cs文件中。顺便说一句,我儿子在砸东西时没有打碎任何东西:-)