title: C# detecting key event in all windows
body: <p>Hey, i have some problem with key event handler. This is source:</p>
  
  <pre><code>using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Data;
          using System.Drawing;
          using System.Linq;
          using System.Text;
          using System.Windows.Forms;
          using System.Diagnostics;
          using System.Threading;
  
          namespace WindowsFormsApplication3
          {
              public partial class Form1 : Form
              {
                  public Form1()
                  {
                      InitializeComponent();
                  }
  
                  [System.Runtime.InteropServices.DllImport("user32.dll")]
                  public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
  
  
          public const int MOUSEEVENTF_LEFTDOWN = 0x02;
          public const int MOUSEEVENTF_LEFTUP = 0x04;
          public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
          public const int MOUSEEVENTF_RIGHTUP = 0x10;
  
  
                  public void Form1_KeyPessed(object sender, KeyEventArgs e)
                  {
                      if (e.KeyCode == Keys.F2)
                      {
                          DrawSquare();
                      }
                  }
  
                  public void DrawSquare()
                  {
                      int line = Convert.ToInt16(textBox1.Text);
                      int time = Convert.ToInt16(textBox2.Text);
  
                      int x = MousePosition.X;
                      int y = MousePosition.Y;
                      Cursor.Position = new Point(x - line / 2, y - line / 2);
                      mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
                      Thread.Sleep(time);
                      Cursor.Position = new Point(x - line / 2, y + line / 2);
                      Thread.Sleep(time);
                      Cursor.Position = new Point(x - line / 2, y + line / 2);
                      Thread.Sleep(time);
                      Cursor.Position = new Point(x + line / 2, y - line / 2);
                      Thread.Sleep(time);
                      Cursor.Position = new Point(x - line / 2, y - line / 2);
                      mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
                      Thread.Sleep(time);
                      Cursor.Position = new Point(x, y);
                  }
              }      
          }
  </code></pre>
  
  <p>Now it only draws square when i press F2 in form, but i want it to work on all windows.
  What should i need more?
  (this is kinda auto drawer for perfect shapes)</p>