开发者

Monitoring for specific Keystrokes in C#

I need to write a Windows application which monitors keystrokes regardless of focus. When it detects a particular keystroke (Ctrl + V, specifically), it needs to perform certain actions.

How can I monitor keystrokes in Windows from 开发者_如何学JAVAC# regardless of focus?


I am not fully understand your question, but If you would like to register global key regardless of your window focus you can use RegisterHotKey windows API.


A really easy way to do it is with GetASyncKeyState. I use it only for games but I think it would work here.

Import this:

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); 

Then you can just do (in a loop or timer)

if(GetAsyncKeyState(Keys.ControlKey) && GetAsyncKeyState(Keys.K))
{
 //DO SOME STUFF!!
}

If you need it to happen just once when it's pressed you can declare

bool oldK; //at class scope

then in your loop/timer

if(!oldK && GetAsyncKeyState(Keys.ControlKey) && GetAsyncKeyState(Keys.K))
{
     //DO SOME STUFF!!
}
oldK = GetAsyncKeyState(Keys.K);


checkout this article Detecting and recording key strokes in C#

you need to write the code into a class.Then add this class to a windows service.Instaniate into start() method of windows service.olace the buffering code into some timer 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;
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜