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

时间:2009-07-23 09:56:02

标签: c# .net security

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

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

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

欢迎任何想法。

LP, 德扬

3 个答案:

答案 0 :(得分:8)

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

它涉及以下步骤:

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

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

3。 Alt-F4等被禁用。

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

当然需要一些P / Invoking。 如果有人想做类似的事情,也许他/她会发现我的骨头例子很有帮助 - link text

LP, 德扬

答案 1 :(得分:1)

我认为您需要调查调用Win32 API才能实现此目的。

您需要查看:

ShowWindowSetWindowPos

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

[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);
}

答案 2 :(得分:-2)

表单具有TopMost属性。

设置Form.TopMost = true