我正在用 c# 编写一个应用程序来锁定或冻结所有程序,直到用户在应用程序的文本框中输入一个值并单击确定。
该应用程序的目的是让人们输入他们的时间。
据我所知,您可以将其设置为最高,但他们可以使用任务管理器结束应用程序,所以我被困在这里..
formName.TopMost = true;
任何帮助,将不胜感激
对,那是正确的。Windows 操作系统允许同时运行多个程序。您所体验的完全是设计使然。
如果我没记错的话,该TopMost
属性仅适用于您进程中的窗口,正如您所提到的,这完全无关紧要:用户仍然可以使用任务管理器杀死您的应用程序。
没有合法的方法来解决这个问题。这不是“限制”,而是功能。任何阻止自己被任务管理器关闭的应用程序都在危险地踩踏我们称之为恶意软件的软件类别。像这样的追求不会带来任何好处。
相关阅读:程序与用户的军备竞赛
也许一个很好的折衷解决方案是让您的窗口/表单实际上位于最顶层并禁用关闭按钮,以便用户知道他们不应该尝试关闭它。这几乎总是足以阻止未决定以任何必要方式结束您的应用程序的用户,这就是您应该关心的全部内容。
请参阅此处的示例代码,了解如何通过设置WS_EX_TOPMOST
标志或切换使您的窗口/表单始终出现在其他正在运行的应用程序之上HWND_TOPMOST
。
我也已经在这里CS_NOCLOSE
写了一个详细的答案,关于通过设置类样式以正确的方式禁用关闭按钮。