The following code adds a menu to the form's system menu. It responds to click events by intercepting the WM_SYSCOMMAND message.
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using System.ComponentModel;
using System.Reflection;
class test : Form {
[DllImport("user32.dll")]
private static extern int GetSystemMenu(int hwnd, int bRevert);
[DllImport("user32.dll")]
private static extern int AppendMenu(int hMenu,int Flagsw,int IDNewItem,string lpNewItem);
public static void Main() {
Application.Run(new test());
}
public test() {
this.Text = "Hello";
this.Show();
int Menu1 = GetSystemMenu(this.Handle.ToInt32(), 0); // get handle to system menu
AppendMenu(Menu1,0xA00,0,null); // makes a separator
AppendMenu(Menu1,0,666,"C# Rules!");
}
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
if(m.Msg==0x112) { // WM_SYSCOMMAND is 0x112
if(m.WParam.ToInt32()==666) { // the Menu's ID is 666
//everything in here will run when menu is clicked
MessageBox.Show("Yo!");
}
}
}
}
Comments