在我的 C# 应用程序中,我想显示一个上下文菜单,但如果在打开上下文菜单时按住 SHIFT 键,我想向菜单添加特殊选项。
我目前正在使用GetKeyState
API 来检查 SHIFT 键。它在我的电脑上运行良好,但非英语 Windows 的用户说它根本不适合他们。
我还在 Win32 API 中读到,当打开上下文菜单时,有一个标志指示菜单中应该显示EXTENDEDVERBS
. 在 C# 中EventArgs
,事件的 forOpening
不包含(据我所知)指示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 键?