C #: detectar si se mantiene presionada la tecla MAYÚS al abrir un menú contextual

En mi aplicación C #, quiero mostrar un menú contextual, pero quiero agregar opciones especiales al menú si la tecla MAYÚS se mantiene presionada cuando se abre el menú contextual.

Actualmente estoy usando laGetKeyState API para verificar la tecla MAYÚS. Funciona bien en mi computadora, pero los usuarios con Windows que no es inglés dicen que no funciona para ellos.

También leí que en la API de Win32 cuando se abre un menú contextual, hay una bandera que indica que en el menú debería aparecerEXTENDEDVERBS. En C # laEventArgs Para elOpeningl evento @ no contiene (por lo que puedo decir) una propiedad que indicaEXTENDEDVERBS o si se presiona alguna tecla modificadora.

Aquí está el código que estoy usando ahora dentro de "Opening "evento:

// SHIFT KEY is being held down
if (Convert.ToBoolean(GetKeyState(0x10) & 0x1000))
{
     _menuStrip.Items.Add(new ToolStripSeparator());

     ToolStripMenuItem log = new ToolStripMenuItem("Enable Debug Logging");
     log.Click += new EventHandler(log_Click);
     log.Checked = Settings.Setting.EnableDebugLogging;
     _menuStrip.Items.Add(log);
 }

Si GetKeyState es la forma correcta de hacerlo, ¿está mi código detectando correctamente la tecla MAYÚS presionada?

Respuestas a la pregunta(10)

Su respuesta a la pregunta