覆盖ALT + CTR + DEL键

时间:2014-07-22 06:02:01

标签: c# windows keyboard

我已经开始使用小型Windows应用程序了。

 private void Form1_KeyDown_1(object sender, KeyEventArgs e)
        {
            if (e.Control && e.Alt && e.KeyCode == Keys.P)
            {
                MessageBox.Show("Hello");
            }
        }

上面的代码工作正常。

我想覆盖 Alt + Ctrl + Del 快捷方式,以显示一些消息而不是任务管理器。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

请不要。你不能,你不应该。评论说明了这一点,但我认为值得在这里说明。

我想一个重要的区别是你可以听取这个组合,但你无法覆盖Windows对它的反应。

在安全意义上考虑这个众所周知的密钥组合的原因:它可以让用户确信他们不打算将密码输入某些聪明的用户,网络钓鱼应用程序。如果Windows允许您覆盖该功能,您可以轻松编写一个全屏,漂亮的蓝色页面,上面写着“CTRL + ALT + DEL解锁”(或实际上说的任何内容),然后您可以弹出一个文本框,用户愿意输入他们的密码,然后就可以了。但Windows不希望人们这样做,人们不想这样做。所以这是不允许的。

至于不应该的原因,有几个原因。首先,人们会感到困惑。他们将寻找什么样的组合按,看你的,并立即混淆,因为他们应该做什么的先入之见。它不仅与可发现的相反,而且即使在用户看到它写得清楚之后也难以相信。

其次,当您的应用程序崩溃时(“我的应用程序将从不崩溃!” - 让我自我改写 - 当您的应用程序崩溃时),用户可能会想要按下这个众所周知的组合键来调出任务管理器,甚至更严重的事情,比如调用重启。这里有两个选项:一,你的应用程序响应得很好,不让用户这样做,那太糟糕了。第二,你的应用程序响应得很好,不让用户这样做,他们现在正在赌注缺乏响应能力(换句话说,他们必须假设你的应用程序不会回应,这对你们两个人来说都是一个不舒服的假设。)

不这样做的另一个重要原因就是范围的差异。例如,用户习惯于将此组合键视为全局操作系统问题。它在一个窗口中的意义,在另一个窗口中意味着什么。从它们下面进行更改将类似于更改单击开始菜单所做的操作。它会让人感到困惑,而且使用起来一般都很蹩脚。出于同样的原因,用户在使用您的应用程序时可能会感到困惑,比如,他们已经选择了任务栏(或其他内容),因此他们会调出该屏幕。用户也可能会使用一个完全不同的应用程序,并以某种方式认为你的应用程序仍然在听,所以他们会按下这个组合,你猜对了,就会感到困惑。

不应该做这样的事情,你应该找到另一种选择。取决于你想做什么(老实说,我无法想象除了编写网页仿冒页面之外你为什么要这样做,但我会期待你最好的参与者), CTRL + break 可能是个不错的选择。它往往是一种好的,可定制的方式来说“停止做你正在做的事情!”这类似于“阻止你正在做的一切!” CTRL + ALT + DEL 往往意味着。