我需要编写一个Windows应用程序来监视击键而不管焦点。当它检测到特定的击键(具体为 Ctrl + V )时,需要执行某些操作。
如何通过C#监控Windows中的击键而不管焦点?
答案 0 :(得分:2)
我不完全理解您的问题,但如果您想注册全局密钥而不考虑窗口焦点,则可以使用RegisterHotKey Windows API。
答案 1 :(得分:1)
一个非常简单的方法是使用GetASyncKeyState。 我只将其用于游戏,但我认为它可以在这里使用。
导入此内容:
[DllImport("user32.dll")]
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);
然后你可以做(在循环或计时器中)
if(GetAsyncKeyState(Keys.ControlKey) && GetAsyncKeyState(Keys.K))
{
//DO SOME STUFF!!
}
如果按下它只需要按一次就可以声明
bool oldK; //at class scope
然后在你的循环/计时器
if(!oldK && GetAsyncKeyState(Keys.ControlKey) && GetAsyncKeyState(Keys.K))
{
//DO SOME STUFF!!
}
oldK = GetAsyncKeyState(Keys.K);
答案 2 :(得分:0)
结帐这篇文章Detecting and recording key strokes in C#
你需要把代码编写成一个类。然后将这个类添加到windows服务中。实现windows service的start()方法。将缓冲代码放入某个计时器 e.g
this.timerBuffFlush = new System.Timers.Timer();
this.timerBuffFlush.Enabled = true;
this.timerBuffFlush.Elapsed += new System.Timers.ElapsedEventHandler(this.timerBuffFlush_Elapsed);
this.timerBufferFlush.Interval = 60000;
}