*我也是抄别人的,禁止关闭没什么问题,当然只要别在进程管理器里关就行。呵呵 禁止拖动有问题,就是用标题栏左边的图标菜单,是可以拖动窗体的。 【解决办法应该是,用this.position来解决吧】 private const int SC_CLOSE = 0xF060; private const int MF_ENABLED = 0x00000000; private const int MF_GRAYED = 0x00000001; private const int MF_DISABLED = 0x00000002; [DllImport("user32.dll", EntryPoint = "GetSystemMenu")] private static extern IntPtr GetSystemMenu(IntPtr hWnd, int bRevert); [DllImport("User32.dll")] public static extern bool EnableMenuItem(IntPtr hMenu, int uIDEnableItem, int uEnable); private void Form1_Load(object sender, EventArgs e) { IntPtr hMenu = GetSystemMenu(this.Handle, 0); EnableMenuItem(hMenu, SC_CLOSE, MF_DISABLED | MF_GRAYED); } protected override CreateParams CreateParams { get { const int CS_NOCLOSE = 0x200; CreateParams cp = base.CreateParams; cp.ClassStyle = cp.ClassStyle | CS_NOCLOSE; return cp; } } protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == 0x84 && m.Result == (IntPtr)2) // 不让拖动标题栏 { m.Result = (IntPtr)1; } if (m.Msg == 0xA3) // 双击标题栏无反应 { m.WParam = System.IntPtr.Zero; } }