System Hooks

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Mague
    New Member
    • May 2007
    • 137

    System Hooks

    hey i need help with system hooks. I need it so when mi program is minimized i can press Ctrl R and it will start a script in the program then ctrl s will stop it.

    Thank you in advance
    Mague
  • kenobewan
    Recognized Expert Specialist
    • Dec 2006
    • 4871

    #2
    Here is an article that may help:
    Global System Hooks in .NET

    Comment

    • Atran
      Contributor
      • May 2007
      • 319

      #3
      Originally posted by Mague
      hey i need help with system hooks. I need it so when mi program is minimized i can press Ctrl R and it will start a script in the program then ctrl s will stop it.

      Thank you in advance
      Mague
      [Read Very Carefully]
      Hello, So you mean to create an hotkey ???
      If you want to press Ctrl + R, and your program is minizimed, so Ctrl+R is an hotkey for your program.
      ------------------------------------
      To begin, create a new solution (Windows Application).
      I call the solution " HotkeyNameSpace " .
      [Do not change your form name After creating the solution.]
      [And Save your solution before starting].
      ------------------------------------------------------------
      After you create the solution: go to " Solution Explorer ", and add to your PROJECT (NOT SOLUTION) a new item (Make the new item: A CODE FILE), and make the CODE FILE's name " Hotkey.cs ".
      And add another code-file to your project,make its name " SystemHotkey.cs ".
      --------------------------------------------------------------------------------------------------------------------
      Now [From the Solution Explorer] open Hotkey.cs, After you open it: you see an empty page [empty page code].
      And copy this code to the empty page (Hotkey.cs page):

      Code:
      using System;
      using System.Runtime.InteropServices;
      using System.Windows.Forms;
      
      namespace Hotkey.Win32
      {
          /// <summary>
          /// Summary description for Win32.
          /// </summary>
          public class User32
          {
              [DllImport("user32.dll")]
              public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
              [DllImport("user32.dll")]
              public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
          }
      
          public class Kernel32
          {
              [DllImport("kernel32.dll")]
              public static extern int GlobalAddAtom(string Name);
              [DllImport("kernel32.dll")]
              public static extern int GlobalDeleteAtom(int atom);
              [DllImport("kernel32.dll")]
              public static extern IntPtr GlobalLock(IntPtr hMem);
              [DllImport("kernel32.dll")]
              public static extern bool GlobalUnlock(IntPtr hMem);
          }
      
          public enum Modifiers { MOD_ALT = 0x0001, MOD_CONTROL = 0x0002, MOD_SHIFT = 0x0004, MOD_WIN = 0x0008 }
          public enum Msgs
          {
              WM_NULL = 0x0000,
              WM_CREATE = 0x0001,
              WM_DESTROY = 0x0002,
              WM_MOVE = 0x0003,
              WM_SIZE = 0x0005,
              WM_ACTIVATE = 0x0006,
              WM_SETFOCUS = 0x0007,
              WM_KILLFOCUS = 0x0008,
              WM_ENABLE = 0x000A,
              WM_SETREDRAW = 0x000B,
              WM_SETTEXT = 0x000C,
              WM_GETTEXT = 0x000D,
              WM_GETTEXTLENGTH = 0x000E,
              WM_PAINT = 0x000F,
              WM_CLOSE = 0x0010,
              WM_QUERYENDSESSION = 0x0011,
              WM_QUIT = 0x0012,
              WM_QUERYOPEN = 0x0013,
              WM_ERASEBKGND = 0x0014,
              WM_SYSCOLORCHANGE = 0x0015,
              WM_ENDSESSION = 0x0016,
              WM_SHOWWINDOW = 0x0018,
              WM_WININICHANGE = 0x001A,
              WM_SETTINGCHANGE = 0x001A,
              WM_DEVMODECHANGE = 0x001B,
              WM_ACTIVATEAPP = 0x001C,
              WM_FONTCHANGE = 0x001D,
              WM_TIMECHANGE = 0x001E,
              WM_CANCELMODE = 0x001F,
              WM_SETCURSOR = 0x0020,
              WM_MOUSEACTIVATE = 0x0021,
              WM_CHILDACTIVATE = 0x0022,
              WM_QUEUESYNC = 0x0023,
              WM_GETMINMAXINFO = 0x0024,
              WM_PAINTICON = 0x0026,
              WM_ICONERASEBKGND = 0x0027,
              WM_NEXTDLGCTL = 0x0028,
              WM_SPOOLERSTATUS = 0x002A,
              WM_DRAWITEM = 0x002B,
              WM_MEASUREITEM = 0x002C,
              WM_DELETEITEM = 0x002D,
              WM_VKEYTOITEM = 0x002E,
              WM_CHARTOITEM = 0x002F,
              WM_SETFONT = 0x0030,
              WM_GETFONT = 0x0031,
              WM_SETHOTKEY = 0x0032,
              WM_GETHOTKEY = 0x0033,
              WM_QUERYDRAGICON = 0x0037,
              WM_COMPAREITEM = 0x0039,
              WM_GETOBJECT = 0x003D,
              WM_COMPACTING = 0x0041,
              WM_COMMNOTIFY = 0x0044,
              WM_WINDOWPOSCHANGING = 0x0046,
              WM_WINDOWPOSCHANGED = 0x0047,
              WM_POWER = 0x0048,
              WM_COPYDATA = 0x004A,
              WM_CANCELJOURNAL = 0x004B,
              WM_NOTIFY = 0x004E,
              WM_INPUTLANGCHANGEREQUEST = 0x0050,
              WM_INPUTLANGCHANGE = 0x0051,
              WM_TCARD = 0x0052,
              WM_HELP = 0x0053,
              WM_USERCHANGED = 0x0054,
              WM_NOTIFYFORMAT = 0x0055,
              WM_CONTEXTMENU = 0x007B,
              WM_STYLECHANGING = 0x007C,
              WM_STYLECHANGED = 0x007D,
              WM_DISPLAYCHANGE = 0x007E,
              WM_GETICON = 0x007F,
              WM_SETICON = 0x0080,
              WM_NCCREATE = 0x0081,
              WM_NCDESTROY = 0x0082,
              WM_NCCALCSIZE = 0x0083,
              WM_NCHITTEST = 0x0084,
              WM_NCPAINT = 0x0085,
              WM_NCACTIVATE = 0x0086,
              WM_GETDLGCODE = 0x0087,
              WM_SYNCPAINT = 0x0088,
              WM_NCMOUSEMOVE = 0x00A0,
              WM_NCLBUTTONDOWN = 0x00A1,
              WM_NCLBUTTONUP = 0x00A2,
              WM_NCLBUTTONDBLCLK = 0x00A3,
              WM_NCRBUTTONDOWN = 0x00A4,
              WM_NCRBUTTONUP = 0x00A5,
              WM_NCRBUTTONDBLCLK = 0x00A6,
              WM_NCMBUTTONDOWN = 0x00A7,
              WM_NCMBUTTONUP = 0x00A8,
              WM_NCMBUTTONDBLCLK = 0x00A9,
              WM_KEYDOWN = 0x0100,
              WM_KEYUP = 0x0101,
              WM_CHAR = 0x0102,
              WM_DEADCHAR = 0x0103,
              WM_SYSKEYDOWN = 0x0104,
              WM_SYSKEYUP = 0x0105,
              WM_SYSCHAR = 0x0106,
              WM_SYSDEADCHAR = 0x0107,
              WM_KEYLAST = 0x0108,
              WM_IME_STARTCOMPOSITION = 0x010D,
              WM_IME_ENDCOMPOSITION = 0x010E,
              WM_IME_COMPOSITION = 0x010F,
              WM_IME_KEYLAST = 0x010F,
              WM_INITDIALOG = 0x0110,
              WM_COMMAND = 0x0111,
              WM_SYSCOMMAND = 0x0112,
              WM_TIMER = 0x0113,
              WM_HSCROLL = 0x0114,
              WM_VSCROLL = 0x0115,
              WM_INITMENU = 0x0116,
              WM_INITMENUPOPUP = 0x0117,
              WM_MENUSELECT = 0x011F,
              WM_MENUCHAR = 0x0120,
              WM_ENTERIDLE = 0x0121,
              WM_MENURBUTTONUP = 0x0122,
              WM_MENUDRAG = 0x0123,
              WM_MENUGETOBJECT = 0x0124,
              WM_UNINITMENUPOPUP = 0x0125,
              WM_MENUCOMMAND = 0x0126,
              WM_CTLCOLORMSGBOX = 0x0132,
              WM_CTLCOLOREDIT = 0x0133,
              WM_CTLCOLORLISTBOX = 0x0134,
              WM_CTLCOLORBTN = 0x0135,
              WM_CTLCOLORDLG = 0x0136,
              WM_CTLCOLORSCROLLBAR = 0x0137,
              WM_CTLCOLORSTATIC = 0x0138,
              WM_MOUSEMOVE = 0x0200,
              WM_LBUTTONDOWN = 0x0201,
              WM_LBUTTONUP = 0x0202,
              WM_LBUTTONDBLCLK = 0x0203,
              WM_RBUTTONDOWN = 0x0204,
              WM_RBUTTONUP = 0x0205,
              WM_RBUTTONDBLCLK = 0x0206,
              WM_MBUTTONDOWN = 0x0207,
              WM_MBUTTONUP = 0x0208,
              WM_MBUTTONDBLCLK = 0x0209,
              WM_MOUSEWHEEL = 0x020A,
              WM_PARENTNOTIFY = 0x0210,
              WM_ENTERMENULOOP = 0x0211,
              WM_EXITMENULOOP = 0x0212,
              WM_NEXTMENU = 0x0213,
              WM_SIZING = 0x0214,
              WM_CAPTURECHANGED = 0x0215,
              WM_MOVING = 0x0216,
              WM_DEVICECHANGE = 0x0219,
              WM_MDICREATE = 0x0220,
              WM_MDIDESTROY = 0x0221,
              WM_MDIACTIVATE = 0x0222,
              WM_MDIRESTORE = 0x0223,
              WM_MDINEXT = 0x0224,
              WM_MDIMAXIMIZE = 0x0225,
              WM_MDITILE = 0x0226,
              WM_MDICASCADE = 0x0227,
              WM_MDIICONARRANGE = 0x0228,
              WM_MDIGETACTIVE = 0x0229,
              WM_MDISETMENU = 0x0230,
              WM_ENTERSIZEMOVE = 0x0231,
              WM_EXITSIZEMOVE = 0x0232,
              WM_DROPFILES = 0x0233,
              WM_MDIREFRESHMENU = 0x0234,
              WM_IME_SETCONTEXT = 0x0281,
              WM_IME_NOTIFY = 0x0282,
              WM_IME_CONTROL = 0x0283,
              WM_IME_COMPOSITIONFULL = 0x0284,
              WM_IME_SELECT = 0x0285,
              WM_IME_CHAR = 0x0286,
              WM_IME_REQUEST = 0x0288,
              WM_IME_KEYDOWN = 0x0290,
              WM_IME_KEYUP = 0x0291,
              WM_MOUSEHOVER = 0x02A1,
              WM_MOUSELEAVE = 0x02A3,
              WM_CUT = 0x0300,
              WM_COPY = 0x0301,
              WM_PASTE = 0x0302,
              WM_CLEAR = 0x0303,
              WM_UNDO = 0x0304,
              WM_RENDERFORMAT = 0x0305,
              WM_RENDERALLFORMATS = 0x0306,
              WM_DESTROYCLIPBOARD = 0x0307,
              WM_DRAWCLIPBOARD = 0x0308,
              WM_PAINTCLIPBOARD = 0x0309,
              WM_VSCROLLCLIPBOARD = 0x030A,
              WM_SIZECLIPBOARD = 0x030B,
              WM_ASKCBFORMATNAME = 0x030C,
              WM_CHANGECBCHAIN = 0x030D,
              WM_HSCROLLCLIPBOARD = 0x030E,
              WM_QUERYNEWPALETTE = 0x030F,
              WM_PALETTEISCHANGING = 0x0310,
              WM_PALETTECHANGED = 0x0311,
              WM_HOTKEY = 0x0312,
              WM_PRINT = 0x0317,
              WM_PRINTCLIENT = 0x0318,
              WM_HANDHELDFIRST = 0x0358,
              WM_HANDHELDLAST = 0x035F,
              WM_AFXFIRST = 0x0360,
              WM_AFXLAST = 0x037F,
              WM_PENWINFIRST = 0x0380,
              WM_PENWINLAST = 0x038F,
              WM_APP = 0x8000,
              WM_USER = 0x0400,
              WM_DDE_INITIATE = 0x03E0,
              WM_DDE_TERMINATE,
              WM_DDE_ADVISE,
              WM_DDE_UNADVISE,
              WM_DDE_ACK,
              WM_DDE_DATA,
              WM_DDE_REQUEST,
              WM_DDE_POKE,
              WM_DDE_EXECUTE
          }
      
      
          /// <summary>
          /// Defines a delegate for Message handling
          /// </summary>
          public delegate void MessageEventHandler(object Sender, ref Message msg, ref bool Handled);
      
          /// <summary>
          /// Inherits from System.Windows.Form.NativeWindow. Provides an Event for Message handling
          /// </summary>
          public class NativeWindowWithEvent : System.Windows.Forms.NativeWindow
          {
              public event MessageEventHandler ProcessMessage;
              protected override void WndProc(ref Message m)
              {
                  if (ProcessMessage != null)
                  {
                      bool Handled = false;
                      ProcessMessage(this, ref m, ref Handled);
                      if (!Handled) base.WndProc(ref m);
                  }
                  else base.WndProc(ref m);
              }
          }
      
          /// <summary>
          /// Inherits from NativeWindowWithEvent and automatic creates/destroys of a dummy window
          /// </summary>
          public class DummyWindowWithEvent : NativeWindowWithEvent, IDisposable
          {
              public DummyWindowWithEvent()
              {
                  CreateParams parms = new CreateParams();
                  this.CreateHandle(parms);
              }
              public void Dispose()
              {
                  if (this.Handle != (IntPtr)0)
                  {
                      this.DestroyHandle();
                  }
              }
          }
      }
      then Save your project.
      ----------------------------------
      Now [from the Solution Explorer] open SystemHotkey.cs .
      You also can see an empty page (SystemHotkey.c s page is empty).
      Copy this code to the SystemHotkey.cs page:

      Code:
      using System;
      using System.ComponentModel;
      using System.Collections;
      using System.Diagnostics;
      using System.Windows.Forms;
      using Hotkey.Win32;
      
      namespace Hotkey.SystemHotkey
      {
          /// <summary>
          /// Handles a System Hotkey
          /// </summary>
          public class SystemHotkey : System.ComponentModel.Component, IDisposable
          {
              private System.ComponentModel.Container components = null;
              protected DummyWindowWithEvent m_Window = new DummyWindowWithEvent();	//window for WM_Hotkey Messages
              protected Shortcut m_HotKey = Shortcut.None;
              protected bool isRegistered = false;
              public event System.EventHandler Pressed;
              public event System.EventHandler Error;
      
              public SystemHotkey(System.ComponentModel.IContainer container)
              {
                  container.Add(this);
                  InitializeComponent();
                  m_Window.ProcessMessage += new MessageEventHandler(MessageEvent);
              }
      
              public SystemHotkey()
              {
                  InitializeComponent();
                  if (!DesignMode)
                  {
                      m_Window.ProcessMessage += new MessageEventHandler(MessageEvent);
                  }
              }
      
              public new void Dispose()
              {
                  if (isRegistered)
                  {
                      if (UnregisterHotkey())
                          System.Diagnostics.Debug.WriteLine("Unreg: OK");
                  }
                  System.Diagnostics.Debug.WriteLine("Disposed");
              }
              #region Component Designer generated code
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>
              private void InitializeComponent()
              {
                  components = new System.ComponentModel.Container();
              }
              #endregion
      
              protected void MessageEvent(object sender, ref Message m, ref bool Handled)
              {	//Handle WM_Hotkey event
                  if ((m.Msg == (int)Win32.Msgs.WM_HOTKEY) && (m.WParam == (IntPtr)this.GetType().GetHashCode()))
                  {
                      Handled = true;
                      System.Diagnostics.Debug.WriteLine("HOTKEY pressed!");
                      if (Pressed != null) Pressed(this, EventArgs.Empty);
                  }
              }
      
              protected bool UnregisterHotkey()
              {	//unregister hotkey
                  return Win32.User32.UnregisterHotKey(m_Window.Handle, this.GetType().GetHashCode());
              }
      
              protected bool RegisterHotkey(Shortcut key)
              {	//register hotkey
                  int mod = 0;
                  Keys k2 = Keys.None;
                  if (((int)key & (int)Keys.Alt) == (int)Keys.Alt) { mod += (int)Win32.Modifiers.MOD_ALT; k2 = Keys.Alt; }
                  if (((int)key & (int)Keys.Shift) == (int)Keys.Shift) { mod += (int)Win32.Modifiers.MOD_SHIFT; k2 = Keys.Shift; }
                  if (((int)key & (int)Keys.Control) == (int)Keys.Control) { mod += (int)Win32.Modifiers.MOD_CONTROL; k2 = Keys.Control; }
      
                  System.Diagnostics.Debug.Write(mod.ToString() + " ");
                  System.Diagnostics.Debug.WriteLine((((int)key) - ((int)k2)).ToString());
      
                  return Win32.User32.RegisterHotKey(m_Window.Handle, this.GetType().GetHashCode(), (int)mod, ((int)key) - ((int)k2));
              }
      
              public bool IsRegistered
              {
                  get { return isRegistered; }
              }
      
      
              [DefaultValue(Shortcut.None)]
              public Shortcut Shortcut
              {
                  get { return m_HotKey; }
                  set
                  {
                      if (DesignMode) { m_HotKey = value; return; }	//Don't register in Designmode
                      if ((isRegistered) && (m_HotKey != value))	//Unregister previous registered Hotkey
                      {
                          if (UnregisterHotkey())
                          {
                              System.Diagnostics.Debug.WriteLine("Unreg: OK");
                              isRegistered = false;
                          }
                          else
                          {
                              if (Error != null) Error(this, EventArgs.Empty);
                              System.Diagnostics.Debug.WriteLine("Unreg: ERR");
                          }
                      }
                      if (value == Shortcut.None) { m_HotKey = value; return; }
                      if (RegisterHotkey(value))	//Register new Hotkey
                      {
                          System.Diagnostics.Debug.WriteLine("Reg: OK");
                          isRegistered = true;
                      }
                      else
                      {
                          if (Error != null) Error(this, EventArgs.Empty);
                          System.Diagnostics.Debug.WriteLine("Reg: ERR");
                      }
                      m_HotKey = value;
                  }
              }
          }
      }
      Save your project.
      --------------------------
      Now delete Program.cs from the solution explorer.
      -------------------------------------------------------------------------
      And open Form1.cs [From the design mode, View the Form1 Code].
      And clear all Form1.cs code, and add this code to the Form1.cs:
      [Wirte the code to Form1.cs]:

      Code:
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Text;
      using System.Windows.Forms;
      
      namespace HotkeyNameSpace
      {
          public partial class Form1 : Form
          {
              private System.Windows.Forms.Label label1;
              //Making a new Hotkey.....
              private Hotkey.SystemHotkey.SystemHotkey systemHotkey1;
              private System.Windows.Forms.Label label2;
              private System.ComponentModel.IContainer components;
      
              public Form1()
              {
                  //
                  // Required for Windows Form Designer support
                  //
                  InitializeComponent();
      
                  //
                  // TODO: Add any constructor code after InitializeComponent call
                  //
              }
      
              /// <summary>
              /// Clean up any resources being used.
              /// </summary>
              protected override void Dispose(bool disposing)
              {
                  if (disposing)
                  {
                      if (components != null)
                      {
                          components.Dispose();
                      }
                  }
                  base.Dispose(disposing);
              }
      
              #region Windows Form Designer generated code
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>
              private void InitializeComponent()
              {
                  this.components = new System.ComponentModel.Container();
                  this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);
                  this.label1 = new System.Windows.Forms.Label();
                  this.label2 = new System.Windows.Forms.Label();
                  this.SuspendLayout();
                  // 
                  // systemHotkey1
                  // 
                  this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
                  this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
                  // 
                  // label1
                  // 
                  this.label1.Location = new System.Drawing.Point(64, 16);
                  this.label1.Name = "label1";
                  this.label1.Size = new System.Drawing.Size(280, 96);
                  this.label1.TabIndex = 0;
                  this.label1.Text = "Waiting for events";
                  // 
                  // label2
                  // 
                  this.label2.Location = new System.Drawing.Point(72, 184);
                  this.label2.Name = "label2";
                  this.label2.Size = new System.Drawing.Size(240, 72);
                  this.label2.TabIndex = 1;
                  this.label2.Text = "Use the SystemHotkey Component in Windows Forms designer to modify the Hotkey. Pr" +
                      "ess Ctrl+R to fire the Hotkey event";
                  // 
                  // Form1
                  // 
                  this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                  this.ClientSize = new System.Drawing.Size(400, 286);
                  this.Controls.Add(this.label2);
                  this.Controls.Add(this.label1);
                  this.Name = "Form1";
                  this.Text = "Form1";
                  this.ResumeLayout(false);
      
              }
              #endregion
      
              /// <summary>
              /// The main entry point for the application.
              /// </summary>
              [STAThread]
              static void Main()
              {
                  Application.EnableVisualStyles();
                  Application.SetCompatibleTextRenderingDefault(false);
                  Application.Run(new Form1());
              }
      
              private void systemHotkey1_Pressed(object sender, System.EventArgs e)
              {
                  label1.Text = "Hotkey Pressed!";
                  MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                  this.Activate();
                  this.BringToFront();
              }
          }
      }
      -------------
      You can see from [the solution explorer] the Form1 icon, at the left of the icon: you can see a Plus Sign, click on the plus sign: you see the Form1 has two files [The first is Form1.Designer. cs, the second is Form1.resx].
      So delete the Form1.Designer. cs.
      --------------------------------------------------
      And run your application (When the application running press Ctrl+R).
      If you want to change the hotkey (or make another), you can see in Form1.cs.
      Do not edit Hotkey.cs and SystemHotkey.cs .
      Goodbye.

      Comment

      • Mague
        New Member
        • May 2007
        • 137

        #4
        Hey how do u say if systemhotkey = Ctrl r or wat do i do

        Comment

        • Atran
          Contributor
          • May 2007
          • 319

          #5
          Originally posted by Mague
          Hey how do u say if systemhotkey = Ctrl r or wat do i do
          Hello, in the Form1.cs, read line 61.
          Code:
          using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Data;
          using System.Drawing;
          using System.Text;
          using System.Windows.Forms;
           
          namespace HotkeyNameSpace
          {
              public partial class Form1 : Form
              {
                  private System.Windows.Forms.Label label1;
                  //Making a new Hotkey.....
                  private Hotkey.SystemHotkey.SystemHotkey systemHotkey1;
                  private System.Windows.Forms.Label label2;
                  private System.ComponentModel.IContainer components;
           
                  public Form1()
                  {
                      //
                      // Required for Windows Form Designer support
                      //
                      InitializeComponent();
           
                      //
                      // TODO: Add any constructor code after InitializeComponent call
                      //
                  }
           
                  /// <summary>
                  /// Clean up any resources being used.
                  /// </summary>
                  protected override void Dispose(bool disposing)
                  {
                      if (disposing)
                      {
                          if (components != null)
                          {
                              components.Dispose();
                          }
                      }
                      base.Dispose(disposing);
                  }
           
                  #region Windows Form Designer generated code
                  /// <summary>
                  /// Required method for Designer support - do not modify
                  /// the contents of this method with the code editor.
                  /// </summary>
                  private void InitializeComponent()
                  {
                      this.components = new System.ComponentModel.Container();
                      this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);  
                      this.label1 = new System.Windows.Forms.Label();
                      this.label2 = new System.Windows.Forms.Label();
                      this.SuspendLayout();
                      // 
                      // systemHotkey1
                      // 
                      this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
                      this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
                      // 
                      // label1
                      // 
                      this.label1.Location = new System.Drawing.Point(64, 16);
                      this.label1.Name = "label1";
                      this.label1.Size = new System.Drawing.Size(280, 96);
                      this.label1.TabIndex = 0;
                      this.label1.Text = "Waiting for events";
                      // 
                      // label2
                      // 
                      this.label2.Location = new System.Drawing.Point(72, 184);
                      this.label2.Name = "label2";
                      this.label2.Size = new System.Drawing.Size(240, 72);
                      this.label2.TabIndex = 1;
                      this.label2.Text = "Use the SystemHotkey Component in Windows Forms designer to modify the Hotkey. Pr" +
                          "ess Ctrl+R to fire the Hotkey event";
                      // 
                      // Form1
                      // 
                      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                      this.ClientSize = new System.Drawing.Size(400, 286);
                      this.Controls.Add(this.label2);
                      this.Controls.Add(this.label1);
                      this.Name = "Form1";
                      this.Text = "Form1";
                      this.ResumeLayout(false);
           
                  }
                  #endregion
           
                  /// <summary>
                  /// The main entry point for the application.
                  /// </summary>
                  [STAThread]
                  static void Main()
                  {
                      Application.EnableVisualStyles();
                      Application.SetCompatibleTextRenderingDefault(fals  e);
                      Application.Run(new Form1());
                  }
           
                  private void systemHotkey1_Pressed(object sender, System.EventArgs e)
                  {
                      label1.Text = "Hotkey Pressed!";
                      MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                      this.Activate();
                      this.BringToFront();
                  }
              }
          }
          We can say: [Express Way]
          Code:
          this.components = new System.ComponentModel.Container();
          //Make a new hotkey.
          this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);
          //Make a key to the hotkey.
          this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
          //Make an pressing event handler.
          this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
          And:
          Code:
          //If the hotkey pressed, do an action.
          private void systemHotkey1_Pressed(object sender, System.EventArgs e)
                  {
                      label1.Text = "Hotkey Pressed!";
                      MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                      this.Activate();
                      this.BringToFront();
                  }
          Hope this help you.

          Comment

          Working...