重複の可能性:
C# アプリケーションでのグローバル キーボード キャプチャ
アプリケーションのグローバル キーボード フックのセットアップを手伝ってくれる人はいますか?
実際のフォームに集中していないときに使用できるホットキー ( Ctrl+など) を設定したい。S
重複の可能性:
C# アプリケーションでのグローバル キーボード キャプチャ
アプリケーションのグローバル キーボード フックのセットアップを手伝ってくれる人はいますか?
実際のフォームに集中していないときに使用できるホットキー ( Ctrl+など) を設定したい。S
Paul の投稿は 2 つの回答にリンクしています。1 つはフックの実装方法を示し、もう 1 つは RegisterHotKey を呼び出すように指示しています。Ctrl+S ホットキーのような単純なもののフックをインストールする必要はないので、代わりにRegisterHotKeyを呼び出します。
または、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());