我们在博物馆、图书馆、办事大厅……往往会看到一些查询机,这些查询机的软件,通常基于 Windows 的,我们如何把这个 Windows 挡在后面,不让用户进入 Windows 界面,是我们所要考虑的。
一、全屏、最上层
创建一个 WinForm,设置窗体为无边框、最大化,就实现了全屏(记住要无边框的配合)。
为了避免被其他窗体挡住,我们需要设置 TopMost。
以下是代码,当然其实用不着明写代码,直接为窗体配置属性就可以了。
二、使用 WebView
查询软件的内容通常是网页表现,所以我们建议使用 WebView 来呈现这些网页,请参见:http://www.benshu.com/c/2014/02/6218.asp。
三、调出屏幕触摸键盘
Windows 10 在平板模式下,通常会自动调出屏幕触摸键盘,在控制面板中也可以设置非平板模式下,也弹出。
但是,由于我们使用 WebView,这个 WebView 中的网页,不能自动调出屏幕触摸 键盘,所以我们需要手动触发,至于如何让 JS 代码执行 C# 代码,前面 WebView 中有讲。
Windows 键盘我们不能自由控制显示内容,所以它上面的设置键我们控制不了,也就是说用户可以点击设置弹出设置页面,不过还好,我们设置了 TopMost,所以尽管打开了设置页面,用户也看不到它。
四、禁止随意退出
不能人人通过屏幕触摸键盘的 Ctrl + Alt + Delete、Alt + F4 就把软件结束了,所以我们要在有权限的情况下才退出,如果试图退出,要求输入密码。
(一)屏蔽 Ctrl + Alt + Delete
有人说在注册表:计算机HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystem 下项:名为 DisableTaskMgr,类型为 DWORD(32位),值为 1,就可以屏蔽了。其实这个是错误的,这个是屏蔽在 Ctrl + Alt + Delete 时菜单界面中,不显示“任务管理器”这个菜单项,并没有屏蔽掉 Ctrl + Alt + Delete。
这个是使用钩子(hook)解决,这里不谈论,有需要的自行百度。
(二)屏蔽 Alt + F4
五、禁止左右边缘滑动调出任务中心、操作中心等
在 Windows 10 中,触摸屏上,左右边缘滑动会调出任务中心、操作中心,这个可以用注册表屏蔽。
计算机HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsEdgeUI
新建项:名为 AllowEdgeSwipe,类型为 DWORD(32位),值为 0。
重启。
六、后台程序
查询软件如果要跑一些后台程序,那么为了不影响前端界面,一定要注意两点:
使用 try、catch。
使用线程。
七、保障能够关闭
要确保 WebView 对应网页打不开、虚拟键盘没弹出来的情况下,管理员可以从其他渠道(比如某个角落有个关闭按钮)进行关闭。