【问题标题】:how can i disable close button of console window in a visual studio console application?如何在 Visual Studio 控制台应用程序中禁用控制台窗口的关闭按钮?
【发布时间】:2011-08-28 12:31:07
【问题描述】:

我需要禁用 Visual Studio 控制台的控制台窗口中的关闭按钮 用 C# 编写的应用程序。我希望应用程序应该运行直到它完成 并且用户不应该能够通过关闭控制台窗口来停止它。我正在使用 Visual Studio 2010

【问题讨论】:

  • 您还需要阻止右键单击任务栏中的应用程序并选择“关闭”。也许是任务管理器?

标签: c# .net console


【解决方案1】:

这是一个在控制台窗口上禁用关闭按钮的示例:

class Program
{
    private const int MF_BYCOMMAND = 0x00000000;
    public const int SC_CLOSE = 0xF060;

    [DllImport("user32.dll")]
    public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);

    [DllImport("user32.dll")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

    [DllImport("kernel32.dll", ExactSpelling = true)]
    private static extern IntPtr GetConsoleWindow();

    static void Main(string[] args)
    {
        DeleteMenu(GetSystemMenu(GetConsoleWindow(), false),SC_CLOSE, MF_BYCOMMAND);
        Console.Read();
    }
}

【讨论】:

  • 在任务栏中右键单击应用程序然后选择关闭如何?
  • 谢谢。就像一个魅力。虽然,正如 PowerRoy 指出的,控制台窗口仍然可以从任务栏关闭,我对给定的解决方案很满意。请你简要解释一下代码是什么到底在做什么?
  • @vjain27: 一切都在 msdn 中 :) GetConsoleWindow 检索与调用进程关联的控制台使用的窗口句柄。 GetSystemMenu 将句柄返回到 Windows 菜单。而DeleteMenu 删除指定的菜单项。最后是常量,您可以找到here
  • @PowerRoy:在某处我读到它很难做到。但也许它可能 - 我不知道 :) 也许你可以尝试将你的应用程序发送到系统托盘?
猜你喜欢
  • 2015-05-29
  • 2010-12-19
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多