2011-05-19 89 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

相關問題