2017-12-06 8 views
0

プログラマーの外でも指定されたキーを押す限り、コンソールアプリケーションを実行します。 例えば、私が何かを書いているときに、プログラムはバックグラウンドで実行中です。特定のキーを押すと、コンソールアプリケーションは何かを実行します。指定されたキーがプログラムの外側に押されるまでプログラムを実行する

私はこれを開始しました:

static void Main(string[] args) 
    { 
     ConsoleKeyInfo keyinfo; 

     do 
     { 
      keyinfo = Console.ReadKey(); 
      //Do something 
     } 
     while (keyinfo.Key != ConsoleKey.F10); 
    }  

しかし、ここで問題は、それが停止し、それがいっているまで押されたキーを待っていること、です。 バックグラウンドで実行し、いつ特定のキーを押しているかを常に確認したい。

すべてのソリューションはありますか?

+0

チェック:https://stackoverflow.com/questions/7196883/capture-media-keys-when-application-is-minimized/7730869#7730869 – SpiderCode

答えて

-1

静的クラスHookManagerによって提供されるイベントを使用できます。

あなたはイベントのみ(付属マウスの活動)のいずれかを追加する必要があります。

UserActivityHook actHook; 
void MainFormLoad(object sender, System.EventArgs e) 
{ 
    actHook= new UserActivityHook(); // crate an instance 

    // hang on events 

    actHook.OnMouseActivity+=new MouseEventHandler(MouseMoved); 
    actHook.KeyDown+=new KeyEventHandler(MyKeyDown); 
    actHook.KeyPress+=new KeyPressEventHandler(MyKeyPress); 
    actHook.KeyUp+=new KeyEventHandler(MyKeyUp); 
} 

例KeyDownイベントのために:

public void MouseMoved(object sender, KeyEventArgs e) 
     { 
      Keys key = e.KeyCode; 
      Console.WriteLine(key.ToString()); 
     } 

ReadKeyメソッドを使用すると、コンソールの内部に何かを入力した場合にのみ実行されます。

詳細:https://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

+0

このリンクは質問に答えるかもしれないがここでは答えの本質的な部分を含めて参照のためのリンクを提供する方がよいでしょう。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18169707) –

+0

私は完全に理解しています、ロハンに感謝します。 –

関連する問題