2011-12-21 13 views
0

我正在编写一个应用程序在c#中锁定或冻结所有程序,直到用户在应用程序的文本框中输入一个值,然后单击确定。如何创建一个WinForms应用程序来锁定/冻结其他每个应用程序并且无法关闭?

该应用程序的目的是让人们输入他们的时间。

据我知道你可以将其设置为最顶端,但他们可以结束与任务管理器,这样我坚持在这里的应用..

formName.TopMost = true; 

任何帮助,将不胜感激

+0

你打算运行什么操作系统?它何时必须运行? – ChrisBD 2011-12-21 10:42:57

+3

这是一个相当古老的话题:如果你想让所有其他程序冻结,如果其他程序想要做同样的事情会怎么样?阻止所有这些事情通常是非常糟糕的 - 你是说你的用户没有做一些非常重要和时间敏感的事情?如果你的应用程序挂起/崩溃怎么办?系统无法使用。 – 2011-12-21 10:49:03

+0

它将被用于windoes 7 os ...以及我不在乎他们在做什么或者它是否冻结他们的电脑我所关心的是让他们填充 – James 2011-12-21 10:54:00

回答

2

是的,这是正确。 Windows操作系统允许同时运行多个程序。你正在经历的是完全由设计。

如果我没有记错的话,TopMost属性只适用于你的进程中的窗口,正如你所提到的,这一切都是毫不相关的:用户仍然可以使用任务管理器杀死你的应用程序。

有没有合法的方法来解决这个问题。这不是一个“限制”,它是一个功能。任何阻止自己被任务管理器关闭的应用程序都会严重危害我们称为恶意软件的软件类别。像这样的追求没有什么好的。

相关阅读:The arms race between programs and users


未尝不是折中的办法是让你的窗口/形式实际上最顶部和禁用关闭按钮,以便用户知道他们不应该试图和关闭它。这几乎总是足以阻止那些没有决心通过任何必要手段终止您的应用程序的用户,这就是您应该关心的所有事情。

请参阅如何让你的窗口/形式总是通过设置WS_EX_TOPMOST标志或切换HWND_TOPMOST出现在其他运行的应用程序顶部的示例代码here

我也已经写了一个关于通过设置CS_NOCLOSE类风格禁用关闭按钮的详细答案here

+0

那么在防病毒软件的情况下呢? – Coops 2011-12-21 10:53:38

+0

谢谢,这很有用,但它可能只显示他们,并禁用一切或限制他们的使用.. – James 2011-12-21 10:55:24

+0

@CodeBlend:杀毒软件怎么样?我不明白与此有关的是什么。我从来没有运行一个杀毒软件来接管我的整个电脑,并阻止我结束它。我希望我永远不要做...... – 2011-12-21 11:04:08

相关问题