В моем приложении на C # я хочу отобразить контекстное меню, но я хочу добавить специальные опции в меню, если удерживать клавишу SHIFT при открытии контекстного меню.
В настоящее время я использую API GetKeyState
, чтобы проверить наличие клавиши SHIFT. Он отлично работает на моем компьютере, но пользователи с неанглоязычной Windows говорят, что у них это совсем не работает.
Я также читал, что в Win32 API при открытии контекстного меню есть флаг, который указывает, что в меню должно отображаться EXTENDEDVERBS
. В C # EventArgs
для события Opening
не содержит (насколько я могу судить) свойство, указывающее EXTENDEDVERBS
или если нажата какая-либо клавиша-модификатор.
Вот код, который я сейчас использую внутри события "Opening
":
// 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);
}
Если GetKeyState - правильный способ сделать это, мой код правильно обнаруживает нажатие клавиши SHIFT?