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 perf
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);
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.
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;
}