我正在尝试构建一个需要在运行时锁定对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!