0

私のコードは次のとおりです。

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
    if (keyData == (Keys.LWin | Keys.M))
    {
        MessageBox.Show("LWin M");
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

private void Form1_Load(object sender, EventArgs e)
{
    this.FormBorderStyle = FormBorderStyle.None;
}

しかし、MessageBox.Show("LWin M");決してうまくいきません。誰が私を助けてくれますか?ありがとう

アップデート

MessageBos.Show("LWin M"); 

テストのためだけに、実際のコードは次のとおりです。

this.WindowState = FormWindowState.Minimized;
4

2 に答える 2

1

これは FormBorderStyle とは関係ありません。Load イベントも省略した場合、コードは機能しません。Win + M ショートカット キーストロークは、Windows がプログラムに送信する前に使用されます。何をするのかは簡単にわかります。アクティブなウィンドウを最小化します。

独自のショートカットに Windows キーを使用しないでください。Ctrl、Alt、および Shift を使用する必要があります。割り当てられていないショートカットを使用することは悪い考えであり、次の Windows バージョンでは機能しなくなります。

于 2012-08-08T10:09:51.357 に答える
0

それはあなたが望むものに依存します

「M」または「LWin」が押されているかどうかを確認する場合は、次の部分を試してください。

if (keyData == Keys.LWin || keyData == Keys.M)
于 2012-08-08T09:10:28.853 に答える