internal static bool ProcessMenuKey (ref Message m)
{
// If we have a currently active menu, deactivate it
if (Application.KeyboardCapture != null) {
if (Application.KeyboardCapture.OnMenuKey ())
return true;
}
// Get the parent form of this message
Form f = (Form)Control.FromHandle (m.HWnd).TopLevelControl;
// If there isn't a Form with this, there isn't much we can do
if (f == null)
return false;
// Check the MainMenuStrip property first
if (f.MainMenuStrip != null)
if (f.MainMenuStrip.OnMenuKey ())
return true;
// Look for any MenuStrip in the form
lock (toolstrips)
foreach (WeakReference wr in toolstrips) {
ToolStrip ts = (ToolStrip)wr.Target;
if (ts == null)
continue;
if (ts.TopLevelControl == f)
if (ts.OnMenuKey ())
return true;
}
return false;
}