我想要一个控制台应用程序运行,只要我按下指定的键,甚至在程序之外。 例如,当我写一些东西时,程序在后台运行。在word中按下一个特定的键,控制台应用程序会做一些事情。
我从这开始:
static void Main(string[] args)
{
ConsoleKeyInfo keyinfo;
do
{
keyinfo = Console.ReadKey();
//Do something
}
while (keyinfo.Key != ConsoleKey.F10);
}
但问题在于,它停止并等待按键直到它继续运行。 我想在后台运行它,并始终检查我何时按下特定键。
任何解决方案?
答案 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