RemoveMenu (user32)
Last changed: -65.241.80.139

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern bool RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

public class RemoveXButton
{
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    static extern int GetMenuItemCount(IntPtr hMenu);
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    static extern bool DrawMenuBar(IntPtr hWnd);
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    static extern bool RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
    private const Int32 MF_BYPOSITION = 0x400;
    private const Int32 MF_REMOVE = 0x1000;

    public static void RemoveCloseButton(Form frm)
    {
        IntPtr hMenu;
        int n;
        hMenu = GetSystemMenu(frm.Handle,false);
        if(hMenu != IntPtr.Zero)
        {
            n = GetMenuItemCount(hMenu);
            if(n > 0)
            {
              //Removes the actual Close button
              RemoveMenu(hMenu, (uint)(n-1), MF_BYPOSITION|MF_REMOVE);
              //Removes the seperator between the Close button and the Maximize button
              RemoveMenu(hMenu, (uint)(n-2), MF_BYPOSITION | MF_REMOVE);
              DrawMenuBar(frm.Handle);
            }
        }
    }

}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
RemoveMenu on MSDN