如何使用C#制作表单系统模式?

我需要在整个系统范围内显示表单,例如屏幕上的/全部/其他窗口。 我确实意识到这通常是/坏的UI练习/,但我有非常具体的场景。

我们打算将普通的Windows PC用于POS现金登记。 屏幕上有一个选项可以打开现金抽屉。 如果有人只是在屏幕上按某些东西并且在职员不看的时候获得金钱,那将是相当糟糕的。 因此,我们为个人电脑配备了RFID阅读器,每位职员都有他/她自己的RFID卡,用于认证。

然而,当职员离开时,我需要一种锁定计算机(或使其无法使用)的机制。 注销似乎太麻烦了。

任何想法欢迎。

LP,Dejan

好吧,经过一天的反复试验后,我找到了解决方案。

它涉及以下步骤:

1.按下“锁定”按钮时,将创建新(空)/桌面/。 程序在此桌面上以全屏格式和登录程序运行。 没有其他任何东西可以在此桌面上切换或运行。

2.通过注册表禁用任务管理器。 当然,有人未经邀请仍然可以访问Ctrl-Alt-Delete菜单,但是他没有什么特别的伤害。

3.禁用Alt-F4等。

4.进行身份validation后,程序将切换回原始桌面,一切都正常进行。

当然,还需要一些P / Invoking。 如果有人想做类似的事情,也许他/她会发现我的裸骨示例有用 – 链接文字

LP,Dejan

我认为你需要调查调用Win32 API来实现这一目标。

你需要调查一下:

ShowWindow和SetWindowPos

并使用类似于以下代码调用它们(注意这是伪代码):

[DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); static void ShowTopmost(Form frm) { ShowWindow(frm.Handle, SW_SHOWMAXIMIZED); SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST, 0, 0, [width of desktop], [height of desktop], SWP_SHOWWINDOW); } 

Form具有TopMost属性。

设置Form.TopMost = true