私の C# アプリケーションでは、コンテキスト メニューを表示したいのですが、コンテキスト メニューが開かれているときに Shift キーが押されている場合、特別なオプションをメニューに追加したいと考えています。
現在、GetKeyState
API を使用して 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 キーが押されたことを正しく検出していますか?