[x] 閉じるボタンを無効化する方法を掲載します。MSDNで質問があったので、pinvoke.netのサンプルを元に自分で作成したサンプルを掲載します。
最小化メニューも無効化していますが、フォーラムの質問では最小化も無効化したいということでしたので、その名残です。×ボタンを無効化するのに必要というわけではありません。
Imports System.Runtime.InteropServices Public Class Form1 Private Shared MF_BYPOSITION As Int32 = &H400 Private Shared MF_REMOVE As Int32 = &H1000 Private Shared MF_GRAYED As Int32 = &H1 Private Shared SC_CLOSE As Int32 = &HF060 <DllImport("User32")> _ Public Shared Function RemoveMenu(ByVal hMenu As IntPtr, ByVal uPosition As UInteger, ByVal uFlags As UInteger) As Boolean End Function <DllImport("User32")> _ Public Shared Function GetSystemMenu(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr End Function <DllImport("User32")> _ Public Shared Function GetMenuItemCount(ByVal hWnd As IntPtr) As Integer End Function <DllImport("User32")> _ Public Shared Function EnableMenuItem(ByVal hWnd As IntPtr, ByVal uIDEnableItem As UInteger, ByVal uEnable As UInteger) As Boolean End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 最小化を不可にする Me.MinimizeBox = False ' X閉じるメニューを使用不可 Dim hMenu As IntPtr = GetSystemMenu(Me.Handle, False) EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED) '' Vista with Aero環境だと必要らしいが環境がないので、確認していません Dim menuItemCount As Integer = GetMenuItemCount(hMenu) RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION Or MF_REMOVE) ' なくてもOK 'RemoveMenu(hMenu, menuItemCount - 2, MF_BYPOSITION Or MF_REMOVE) End Sub End Class