بسم الله الرحمن الرحيم
هذا الكود منتشر كثير وأنا قمت بوضعه لتذكير والفائدة

لنستطيع أن نفعل كما في الصورة
أولأً نستورد من وئائف النظام
[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll")]
private static extern bool InsertMenu(IntPtr hMenu, Int32 wPosition, Int32 wFlags, Int32 wIDNewItem, string lpNewItem);على ما أظن أن الأوامر سهلة وليست بحاجة إلى شرح مفصل
وللإضافة الأوامر نكتب كما يلي
IntPtr SystemMenuHandle = GetSystemMenu(this.Handle, false); InsertMenu(SystemMenuHandle, 5, MF_BYPOSITION | MF_SEPARATOR, 0, string.Empty); InsertMenu(SystemMenuHandle, 6, MF_BYPOSITION, IDM_ARAB_TEAM_2000_SIT, "Arab Team 2000 Sit"); InsertMenu(SystemMenuHandle, 7, MF_BYPOSITION, IDM_ABOUT, "About");
ثوابت البرنامج
private const Int32 WM_SYSCOMMAND = 0x112; private const Int32 MF_SEPARATOR = 0x800; private const Int32 MF_BYPOSITION = 0x400; private const Int32 IDM_ARAB_TEAM_2000_SIT = 1000; private const Int32 IDM_ABOUT = 1001;
ولنستطيع أن نتفاعل مع الأوامر التي قمنا بإضافتها
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
switch (m.WParam.ToInt32())
{
case IDM_ARAB_TEAM_2000_SIT:
System.Diagnostics.Process.Start("/");
return;
case IDM_ABOUT:
About frmAbout = new About();
frmAbout.ShowDialog(this);
return;
default:
break;
}
}
base.WndProc(ref m);
}أتمنى لكم التوفيق