2011-05-19 64 views

回答

39

下面是一个例子来禁用控制台窗口关闭按钮:在任务栏应用

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(); 
    } 
} 
+2

如何右键单击任务栏中的应用程序,然后选择关闭? – RvdK 2011-05-19 06:35:26

+0

Thanks.Works就像一个魅力。虽然,PowerRoy指出,控制台窗口仍然可以从任务栏关闭,我很满意给定的解决方案。请您简要解释代码实际上在做什么? – vjain27 2011-05-19 23:51:48

+1

@ vjain27:一切都在MSDN :) [GetConsoleWindow](http://msdn.microsoft.com/en-us/library/ms683175%28v=vs.85%29.aspx)检索控制台使用的窗口句柄与调用过程相关联。 [GetSystemMenu](http://msdn.microsoft.com/en-us/library/ms647985%28v=vs.85%29.aspx)返回窗口菜单的句柄。和[DeleteMenu](http://msdn.microsoft.com/en-us/library/ms647629%28VS.85%29.aspx)删除指定的菜单项。最后,你可以在这里找到常量(http://www.pinvoke.net/default.aspx/user32.deletemenu)。 – Reniuz 2011-05-20 06:44:20

相关问题