override ALT+ CTR+ DEL keys

本文关键字:keys DEL CTR+ ALT+ override | 更新日期: 2023-09-27 18:14:18

我已经开始做一个小的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快捷键来显示一些消息而不是任务管理器。

我怎样才能做到这一点?

override ALT+ CTR+ DEL keys

不要。你不能,也不应该。评论中是这么说的,但我认为还是值得在这里写下来。

我想一个重要的区别是你可以听到组合,但你不能覆盖Windows对它的反应。

从安全角度考虑这个众所周知的密钥组合的原因:它让登录用户确信他们不会将密码输入到一些聪明的网络钓鱼应用程序中。如果Windows允许你覆盖这个功能,你可以很容易地写一个全屏、漂亮的蓝色页面,上面写着"CTRL + ALT + DEL解锁"(或者别的什么),然后你可以弹出一个文本框,用户愿意输入他们的密码,这样你就搞定了。但是Windows不希望人们那样做,人们也不想那样做。这是不允许的

至于为什么你不应该,有几个原因。首先,人们会感到困惑。他们会寻找按下什么组合键,看到你的键,并立即因为先入为主的概念而感到困惑。这不仅与可发现性相反,而且即使用户看到明文写出来,也很难相信。 其次,当你的应用程序崩溃时("but my applications will never crash!"(让我换个说法——当应用程序崩溃时),用户可能想要按这个众所周知的组合键来打开任务管理器,或者甚至更严重的事情,比如调用重新启动。这里有两种选择:一,你的应用程序响应良好,不允许用户这样做,那就太糟糕了。第二,你的应用程序没有很好地响应,不能让用户这样做,他们现在正把赌注押在缺乏响应上(换句话说,他们必须假设你的应用程序不会响应,这对你们俩来说都是一个不舒服的假设)。

不这样做的另一个重要原因是作用域的不同。首先,用户习惯了这个键组合是一个全局的操作系统问题。在一个窗口里的意思,在另一个窗口里也一样。从他们下面进行更改将类似于更改,比如说,单击开始菜单。它会让人感到困惑,而且通常使用起来很讨厌。出于同样的原因,用户在使用你的应用时可能会感到困惑,比如说,他们选择了任务栏(或其他什么),所以他们会打开那个屏幕。也有可能用户正在使用一个完全不同的应用程序,并且不知何故认为你的应用程序仍在监听,所以他们会按下组合,你猜对了,会感到困惑。

你应该找一个替代方法,而不是这样做。根据您想要做的事情(老实说,我无法想象除了编写一个网络钓鱼页面之外您为什么要这样做,但为了讨论的缘故,我希望您能做到最好),CTRL+break可能是一个不错的选择。它往往是一种很好的、可定制的方式来表示"停止做你正在做的事情!",这类似于CTRL+ALT+DEL往往意味着"停止你正在做的一切!"。