3
MonoコンソールでReadline()を使用してctrl +をキャッチする方法はありますか? Mono 2.10.2を使用しています。たとえば、Ctrl-Dを押すと、何も起こりません。私はReadLine()が何のシグナルを押しているのか分かりません。catch Control + key in Mono C#Readline
MonoコンソールでReadline()を使用してctrl +をキャッチする方法はありますか? Mono 2.10.2を使用しています。たとえば、Ctrl-Dを押すと、何も起こりません。私はReadLine()が何のシグナルを押しているのか分かりません。catch Control + key in Mono C#Readline
の文章をコンソールに入力します。
コントロールキーにはテキストが含まれていないため、見た目には「キャッチ」されません。コントロールキーをキャッチするには、Console.ReadKey()
関数を使用します。
ここにはdocumentation page for Console.ReadKey()
のサンプルがあります。
ConsoleKeyInfo cki;
// Prevent example from ending if CTL+C is pressed.
Console.TreatControlCAsInput = true;
Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
Console.WriteLine("Press the Escape (Esc) key to quit: \n");
do
{
cki = Console.ReadKey();
Console.Write(" --- You pressed ");
if((cki.Modifiers & ConsoleModifiers.Alt) != 0)
Console.Write("ALT+");
if((cki.Modifiers & ConsoleModifiers.Shift) != 0)
Console.Write("SHIFT+");
if((cki.Modifiers & ConsoleModifiers.Control) != 0)
Console.Write("CTL+");
Console.WriteLine(cki.Key.ToString());
} while (cki.Key != ConsoleKey.Escape);
多分私は何かが欠けているかもしれませんが、それはしません。テキスト全体を読む必要がありますが、ctrl-dとctrl-zもキャッチする必要があります。 –
ドキュメントを読んだら、 'Console.ReadKey(bool)'を使うことができます。これにより、上記のコードを使って 'Ctrl + D 'を検出し、コンソールに文字を出力することができます。上で説明したように、 'Console.ReadLine()'で特別な文字をキャプチャすることはできません。 – foxy
CTRL-dではなく、 "EOF"シグナルイベントを捕まえたいと思います。 –