监视C#中的特定击键

时间:2011-07-15 05:56:34

标签: c# windows keypress

我需要编写一个Windows应用程序来监视击键而不管焦点。当它检测到特定的击键(具体为 Ctrl + V )时,需要执行某些操作。

如何通过C#监控Windows中的击键而不管焦点?

3 个答案:

答案 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;
    }