ホームページ >バックエンド開発 >C++ >C# コンソール アプリケーションでキー押下イベントをキャプチャして処理するにはどうすればよいですか?

C# コンソール アプリケーションでキー押下イベントをキャプチャして処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 12:38:40810ブラウズ

How Do I Capture and Process Key Press Events in C# Console Applications?

C# コンソール アプリケーションでのキー押下イベントの処理

C# コンソール アプリケーションでは、キー押下によるユーザー入力を監視することは、対話型プログラムにとって重要です。よくある質問: キー押下イベントをどのようにキャプチャして処理できるでしょうか?

間違ったアプローチ

提供されたコード スニペットは、PreviewKeyDownEventArgs イベントを使用してキー押下をリッスンしようとします。 。ただし、このアプローチは Windows フォーム アプリケーションに関係するため、コンソール アプリケーションでは正しくありません。

正しいアプローチ

コンソール アプリケーションでキー押下イベントを処理するには、次のように使用できます。 Console クラスの ReadKey() メソッド。このメソッドは、ユーザーがキーを押すのを待ち、押されたキーに関する情報を含む ConsoleKeyInfo オブジェクトを返します。

ユーザーが押したキーをキャプチャして表示するプログラム例を次に示します。

public class Program
{
    public static void Main()
    {
        ConsoleKeyInfo keyinfo;
        do
        {
            keyinfo = Console.ReadKey();
            Console.WriteLine(keyinfo.Key + " was pressed");
        }
        while (keyinfo.Key != ConsoleKey.X);
    }
}

説明

ReadKey() メソッドは、コンソール入力から 1 つのキーストロークを読み取ります。バッファに保存し、keyinfo 変数に保存します。 ConsoleKeyInfo オブジェクトの Key プロパティは、押されたキーを表します。

do-while ループは、ユーザーが「X」キーを押してプログラムを終了するまで、継続的に入力を求めます。キーが押されるたびに、その値がコンソールに表示されます。

注: この方法では、コンソール アプリケーションにフォーカスがある必要があります。システム全体でキー押下イベントをキャプチャするには、より高度な技術である Windows フックの採用を検討してください。

以上がC# コンソール アプリケーションでキー押下イベントをキャプチャして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。