5

重複の可能性:
C# アプリケーションでのグローバル キーボード キャプチャ

アプリケーションのグローバル キーボード フックのセットアップを手伝ってくれる人はいますか?

実際のフォームに集中していないときに使用できるホットキー ( Ctrl+など) を設定したい。S

4

2 に答える 2

7

Paul の投稿は 2 つの回答にリンクしています。1 つはフックの実装方法を示し、もう 1 つは RegisterHotKey を呼び出すように指示しています。Ctrl+S ホットキーのような単純なもののフックをインストールする必要はないので、代わりにRegisterHotKeyを呼び出します。

于 2009-05-05T11:07:28.680 に答える
2

または、C# の MessageFilter を使用できます。アプリケーションのプロセスからのコントロール/フォームにフォーカスがある間は機能するはずです。

サンプルコード:

class KeyboardMessageFilter : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg == ((int)Helper.WindowsMessages.WM_KEYDOWN))
        {
            switch ((int)m.WParam)
            {
                case (int)Keys.Escape:
                    // Do Something
                    return true;
                case (int)Keys.Right:
                    // Do Something
                    return true;
                case (int)Keys.Left:
                    // Do Something
                    return true;
            }
        }

        return false;
    }
}

アプリケーションに新しい MessageFilter を追加するだけではありません。

Application.AddMessageFilter(new KeyboardMessageFilter());
于 2009-05-05T11:31:26.423 に答える