运行程序直到在程序外按下指定的键

时间:2017-12-06 09:38:32

标签: c# key background-process

我想要一个控制台应用程序运行,只要我按下指定的键,甚至在程序之外。 例如,当我写一些东西时,程序在后台运行。在word中按下一个特定的键,控制台应用程序会做一些事情。

我从这开始:

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

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

但问题在于,它停止并等待按键直到它继续运行。 我想在后台运行它,并始终检查我何时按下特定键。

任何解决方案?

1 个答案:

答案 0 :(得分:-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