using System . Runtime . InteropServices;
const uint TPM_LEFTBUTTON = 0 ;
const uint TPM_RIGHTBUTTON = 2 ;
const uint TPM_LEFTALIGN = 0 ;
const uint TPM_CENTERALIGN = 4 ;
const uint TPM_RIGHTALIGN = 8 ;
const uint TPM_TOPALIGN = 0 ;
const uint TPM_VCENTERALIGN = 0x10 ;
const uint TPM_BOTTOMALIGN = 0x20 ;
const uint TPM_RETURNCMD = 0x100 ;
const uint WM_SYSCOMMAND = 0x0112 ;
#region DllImport
[ DllImport ( "User32.dll" )]
static extern IntPtr GetSystemMenu( IntPtr hWnd, bool bRevert);
[ DllImport ( "User32.dll" )]
static extern bool GetCursorPos( out Point lpPoint);
[ DllImport ( "User32.dll" )]
static extern int TrackPopupMenu( IntPtr hMenu, uint uFlags,
int x, int y, int nReserved, IntPtr hWnd, out Rectangle prcRect);
[ DllImport ( "User32.DLL" )]
public static extern int SendMessage( IntPtr hWnd, uint Msg, int wParam, int lParam);
#endregion
private void button1_Click( object sender , EventArgs e)
{
Point vPoint;
Rectangle vRect;
GetCursorPos( out vPoint);
SendMessage(Handle, WM_SYSCOMMAND, TrackPopupMenu(
GetSystemMenu(Handle, false),
TPM_RETURNCMD | TPM_LEFTBUTTON, vPoint . X, vPoint . Y,
0 , Handle, out vRect), 0 );
}