473,387 Members | 1,760 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

System Hooks

Mague
137 100+
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
Jun 9 '07 #1
4 2549
kenobewan
4,871 Expert 4TB
Here is an article that may help:
Global System Hooks in .NET
Jun 10 '07 #2
Atran
319 100+
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):

Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Windows.Forms;
  4.  
  5. namespace Hotkey.Win32
  6. {
  7.     /// <summary>
  8.     /// Summary description for Win32.
  9.     /// </summary>
  10.     public class User32
  11.     {
  12.         [DllImport("user32.dll")]
  13.         public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
  14.         [DllImport("user32.dll")]
  15.         public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
  16.     }
  17.  
  18.     public class Kernel32
  19.     {
  20.         [DllImport("kernel32.dll")]
  21.         public static extern int GlobalAddAtom(string Name);
  22.         [DllImport("kernel32.dll")]
  23.         public static extern int GlobalDeleteAtom(int atom);
  24.         [DllImport("kernel32.dll")]
  25.         public static extern IntPtr GlobalLock(IntPtr hMem);
  26.         [DllImport("kernel32.dll")]
  27.         public static extern bool GlobalUnlock(IntPtr hMem);
  28.     }
  29.  
  30.     public enum Modifiers { MOD_ALT = 0x0001, MOD_CONTROL = 0x0002, MOD_SHIFT = 0x0004, MOD_WIN = 0x0008 }
  31.     public enum Msgs
  32.     {
  33.         WM_NULL = 0x0000,
  34.         WM_CREATE = 0x0001,
  35.         WM_DESTROY = 0x0002,
  36.         WM_MOVE = 0x0003,
  37.         WM_SIZE = 0x0005,
  38.         WM_ACTIVATE = 0x0006,
  39.         WM_SETFOCUS = 0x0007,
  40.         WM_KILLFOCUS = 0x0008,
  41.         WM_ENABLE = 0x000A,
  42.         WM_SETREDRAW = 0x000B,
  43.         WM_SETTEXT = 0x000C,
  44.         WM_GETTEXT = 0x000D,
  45.         WM_GETTEXTLENGTH = 0x000E,
  46.         WM_PAINT = 0x000F,
  47.         WM_CLOSE = 0x0010,
  48.         WM_QUERYENDSESSION = 0x0011,
  49.         WM_QUIT = 0x0012,
  50.         WM_QUERYOPEN = 0x0013,
  51.         WM_ERASEBKGND = 0x0014,
  52.         WM_SYSCOLORCHANGE = 0x0015,
  53.         WM_ENDSESSION = 0x0016,
  54.         WM_SHOWWINDOW = 0x0018,
  55.         WM_WININICHANGE = 0x001A,
  56.         WM_SETTINGCHANGE = 0x001A,
  57.         WM_DEVMODECHANGE = 0x001B,
  58.         WM_ACTIVATEAPP = 0x001C,
  59.         WM_FONTCHANGE = 0x001D,
  60.         WM_TIMECHANGE = 0x001E,
  61.         WM_CANCELMODE = 0x001F,
  62.         WM_SETCURSOR = 0x0020,
  63.         WM_MOUSEACTIVATE = 0x0021,
  64.         WM_CHILDACTIVATE = 0x0022,
  65.         WM_QUEUESYNC = 0x0023,
  66.         WM_GETMINMAXINFO = 0x0024,
  67.         WM_PAINTICON = 0x0026,
  68.         WM_ICONERASEBKGND = 0x0027,
  69.         WM_NEXTDLGCTL = 0x0028,
  70.         WM_SPOOLERSTATUS = 0x002A,
  71.         WM_DRAWITEM = 0x002B,
  72.         WM_MEASUREITEM = 0x002C,
  73.         WM_DELETEITEM = 0x002D,
  74.         WM_VKEYTOITEM = 0x002E,
  75.         WM_CHARTOITEM = 0x002F,
  76.         WM_SETFONT = 0x0030,
  77.         WM_GETFONT = 0x0031,
  78.         WM_SETHOTKEY = 0x0032,
  79.         WM_GETHOTKEY = 0x0033,
  80.         WM_QUERYDRAGICON = 0x0037,
  81.         WM_COMPAREITEM = 0x0039,
  82.         WM_GETOBJECT = 0x003D,
  83.         WM_COMPACTING = 0x0041,
  84.         WM_COMMNOTIFY = 0x0044,
  85.         WM_WINDOWPOSCHANGING = 0x0046,
  86.         WM_WINDOWPOSCHANGED = 0x0047,
  87.         WM_POWER = 0x0048,
  88.         WM_COPYDATA = 0x004A,
  89.         WM_CANCELJOURNAL = 0x004B,
  90.         WM_NOTIFY = 0x004E,
  91.         WM_INPUTLANGCHANGEREQUEST = 0x0050,
  92.         WM_INPUTLANGCHANGE = 0x0051,
  93.         WM_TCARD = 0x0052,
  94.         WM_HELP = 0x0053,
  95.         WM_USERCHANGED = 0x0054,
  96.         WM_NOTIFYFORMAT = 0x0055,
  97.         WM_CONTEXTMENU = 0x007B,
  98.         WM_STYLECHANGING = 0x007C,
  99.         WM_STYLECHANGED = 0x007D,
  100.         WM_DISPLAYCHANGE = 0x007E,
  101.         WM_GETICON = 0x007F,
  102.         WM_SETICON = 0x0080,
  103.         WM_NCCREATE = 0x0081,
  104.         WM_NCDESTROY = 0x0082,
  105.         WM_NCCALCSIZE = 0x0083,
  106.         WM_NCHITTEST = 0x0084,
  107.         WM_NCPAINT = 0x0085,
  108.         WM_NCACTIVATE = 0x0086,
  109.         WM_GETDLGCODE = 0x0087,
  110.         WM_SYNCPAINT = 0x0088,
  111.         WM_NCMOUSEMOVE = 0x00A0,
  112.         WM_NCLBUTTONDOWN = 0x00A1,
  113.         WM_NCLBUTTONUP = 0x00A2,
  114.         WM_NCLBUTTONDBLCLK = 0x00A3,
  115.         WM_NCRBUTTONDOWN = 0x00A4,
  116.         WM_NCRBUTTONUP = 0x00A5,
  117.         WM_NCRBUTTONDBLCLK = 0x00A6,
  118.         WM_NCMBUTTONDOWN = 0x00A7,
  119.         WM_NCMBUTTONUP = 0x00A8,
  120.         WM_NCMBUTTONDBLCLK = 0x00A9,
  121.         WM_KEYDOWN = 0x0100,
  122.         WM_KEYUP = 0x0101,
  123.         WM_CHAR = 0x0102,
  124.         WM_DEADCHAR = 0x0103,
  125.         WM_SYSKEYDOWN = 0x0104,
  126.         WM_SYSKEYUP = 0x0105,
  127.         WM_SYSCHAR = 0x0106,
  128.         WM_SYSDEADCHAR = 0x0107,
  129.         WM_KEYLAST = 0x0108,
  130.         WM_IME_STARTCOMPOSITION = 0x010D,
  131.         WM_IME_ENDCOMPOSITION = 0x010E,
  132.         WM_IME_COMPOSITION = 0x010F,
  133.         WM_IME_KEYLAST = 0x010F,
  134.         WM_INITDIALOG = 0x0110,
  135.         WM_COMMAND = 0x0111,
  136.         WM_SYSCOMMAND = 0x0112,
  137.         WM_TIMER = 0x0113,
  138.         WM_HSCROLL = 0x0114,
  139.         WM_VSCROLL = 0x0115,
  140.         WM_INITMENU = 0x0116,
  141.         WM_INITMENUPOPUP = 0x0117,
  142.         WM_MENUSELECT = 0x011F,
  143.         WM_MENUCHAR = 0x0120,
  144.         WM_ENTERIDLE = 0x0121,
  145.         WM_MENURBUTTONUP = 0x0122,
  146.         WM_MENUDRAG = 0x0123,
  147.         WM_MENUGETOBJECT = 0x0124,
  148.         WM_UNINITMENUPOPUP = 0x0125,
  149.         WM_MENUCOMMAND = 0x0126,
  150.         WM_CTLCOLORMSGBOX = 0x0132,
  151.         WM_CTLCOLOREDIT = 0x0133,
  152.         WM_CTLCOLORLISTBOX = 0x0134,
  153.         WM_CTLCOLORBTN = 0x0135,
  154.         WM_CTLCOLORDLG = 0x0136,
  155.         WM_CTLCOLORSCROLLBAR = 0x0137,
  156.         WM_CTLCOLORSTATIC = 0x0138,
  157.         WM_MOUSEMOVE = 0x0200,
  158.         WM_LBUTTONDOWN = 0x0201,
  159.         WM_LBUTTONUP = 0x0202,
  160.         WM_LBUTTONDBLCLK = 0x0203,
  161.         WM_RBUTTONDOWN = 0x0204,
  162.         WM_RBUTTONUP = 0x0205,
  163.         WM_RBUTTONDBLCLK = 0x0206,
  164.         WM_MBUTTONDOWN = 0x0207,
  165.         WM_MBUTTONUP = 0x0208,
  166.         WM_MBUTTONDBLCLK = 0x0209,
  167.         WM_MOUSEWHEEL = 0x020A,
  168.         WM_PARENTNOTIFY = 0x0210,
  169.         WM_ENTERMENULOOP = 0x0211,
  170.         WM_EXITMENULOOP = 0x0212,
  171.         WM_NEXTMENU = 0x0213,
  172.         WM_SIZING = 0x0214,
  173.         WM_CAPTURECHANGED = 0x0215,
  174.         WM_MOVING = 0x0216,
  175.         WM_DEVICECHANGE = 0x0219,
  176.         WM_MDICREATE = 0x0220,
  177.         WM_MDIDESTROY = 0x0221,
  178.         WM_MDIACTIVATE = 0x0222,
  179.         WM_MDIRESTORE = 0x0223,
  180.         WM_MDINEXT = 0x0224,
  181.         WM_MDIMAXIMIZE = 0x0225,
  182.         WM_MDITILE = 0x0226,
  183.         WM_MDICASCADE = 0x0227,
  184.         WM_MDIICONARRANGE = 0x0228,
  185.         WM_MDIGETACTIVE = 0x0229,
  186.         WM_MDISETMENU = 0x0230,
  187.         WM_ENTERSIZEMOVE = 0x0231,
  188.         WM_EXITSIZEMOVE = 0x0232,
  189.         WM_DROPFILES = 0x0233,
  190.         WM_MDIREFRESHMENU = 0x0234,
  191.         WM_IME_SETCONTEXT = 0x0281,
  192.         WM_IME_NOTIFY = 0x0282,
  193.         WM_IME_CONTROL = 0x0283,
  194.         WM_IME_COMPOSITIONFULL = 0x0284,
  195.         WM_IME_SELECT = 0x0285,
  196.         WM_IME_CHAR = 0x0286,
  197.         WM_IME_REQUEST = 0x0288,
  198.         WM_IME_KEYDOWN = 0x0290,
  199.         WM_IME_KEYUP = 0x0291,
  200.         WM_MOUSEHOVER = 0x02A1,
  201.         WM_MOUSELEAVE = 0x02A3,
  202.         WM_CUT = 0x0300,
  203.         WM_COPY = 0x0301,
  204.         WM_PASTE = 0x0302,
  205.         WM_CLEAR = 0x0303,
  206.         WM_UNDO = 0x0304,
  207.         WM_RENDERFORMAT = 0x0305,
  208.         WM_RENDERALLFORMATS = 0x0306,
  209.         WM_DESTROYCLIPBOARD = 0x0307,
  210.         WM_DRAWCLIPBOARD = 0x0308,
  211.         WM_PAINTCLIPBOARD = 0x0309,
  212.         WM_VSCROLLCLIPBOARD = 0x030A,
  213.         WM_SIZECLIPBOARD = 0x030B,
  214.         WM_ASKCBFORMATNAME = 0x030C,
  215.         WM_CHANGECBCHAIN = 0x030D,
  216.         WM_HSCROLLCLIPBOARD = 0x030E,
  217.         WM_QUERYNEWPALETTE = 0x030F,
  218.         WM_PALETTEISCHANGING = 0x0310,
  219.         WM_PALETTECHANGED = 0x0311,
  220.         WM_HOTKEY = 0x0312,
  221.         WM_PRINT = 0x0317,
  222.         WM_PRINTCLIENT = 0x0318,
  223.         WM_HANDHELDFIRST = 0x0358,
  224.         WM_HANDHELDLAST = 0x035F,
  225.         WM_AFXFIRST = 0x0360,
  226.         WM_AFXLAST = 0x037F,
  227.         WM_PENWINFIRST = 0x0380,
  228.         WM_PENWINLAST = 0x038F,
  229.         WM_APP = 0x8000,
  230.         WM_USER = 0x0400,
  231.         WM_DDE_INITIATE = 0x03E0,
  232.         WM_DDE_TERMINATE,
  233.         WM_DDE_ADVISE,
  234.         WM_DDE_UNADVISE,
  235.         WM_DDE_ACK,
  236.         WM_DDE_DATA,
  237.         WM_DDE_REQUEST,
  238.         WM_DDE_POKE,
  239.         WM_DDE_EXECUTE
  240.     }
  241.  
  242.  
  243.     /// <summary>
  244.     /// Defines a delegate for Message handling
  245.     /// </summary>
  246.     public delegate void MessageEventHandler(object Sender, ref Message msg, ref bool Handled);
  247.  
  248.     /// <summary>
  249.     /// Inherits from System.Windows.Form.NativeWindow. Provides an Event for Message handling
  250.     /// </summary>
  251.     public class NativeWindowWithEvent : System.Windows.Forms.NativeWindow
  252.     {
  253.         public event MessageEventHandler ProcessMessage;
  254.         protected override void WndProc(ref Message m)
  255.         {
  256.             if (ProcessMessage != null)
  257.             {
  258.                 bool Handled = false;
  259.                 ProcessMessage(this, ref m, ref Handled);
  260.                 if (!Handled) base.WndProc(ref m);
  261.             }
  262.             else base.WndProc(ref m);
  263.         }
  264.     }
  265.  
  266.     /// <summary>
  267.     /// Inherits from NativeWindowWithEvent and automatic creates/destroys of a dummy window
  268.     /// </summary>
  269.     public class DummyWindowWithEvent : NativeWindowWithEvent, IDisposable
  270.     {
  271.         public DummyWindowWithEvent()
  272.         {
  273.             CreateParams parms = new CreateParams();
  274.             this.CreateHandle(parms);
  275.         }
  276.         public void Dispose()
  277.         {
  278.             if (this.Handle != (IntPtr)0)
  279.             {
  280.                 this.DestroyHandle();
  281.             }
  282.         }
  283.     }
  284. }
  285.  
  286.  
then Save your project.
----------------------------------
Now [from the Solution Explorer] open SystemHotkey.cs.
You also can see an empty page (SystemHotkey.cs page is empty).
Copy this code to the SystemHotkey.cs page:

Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.ComponentModel;
  3. using System.Collections;
  4. using System.Diagnostics;
  5. using System.Windows.Forms;
  6. using Hotkey.Win32;
  7.  
  8. namespace Hotkey.SystemHotkey
  9. {
  10.     /// <summary>
  11.     /// Handles a System Hotkey
  12.     /// </summary>
  13.     public class SystemHotkey : System.ComponentModel.Component, IDisposable
  14.     {
  15.         private System.ComponentModel.Container components = null;
  16.         protected DummyWindowWithEvent m_Window = new DummyWindowWithEvent();    //window for WM_Hotkey Messages
  17.         protected Shortcut m_HotKey = Shortcut.None;
  18.         protected bool isRegistered = false;
  19.         public event System.EventHandler Pressed;
  20.         public event System.EventHandler Error;
  21.  
  22.         public SystemHotkey(System.ComponentModel.IContainer container)
  23.         {
  24.             container.Add(this);
  25.             InitializeComponent();
  26.             m_Window.ProcessMessage += new MessageEventHandler(MessageEvent);
  27.         }
  28.  
  29.         public SystemHotkey()
  30.         {
  31.             InitializeComponent();
  32.             if (!DesignMode)
  33.             {
  34.                 m_Window.ProcessMessage += new MessageEventHandler(MessageEvent);
  35.             }
  36.         }
  37.  
  38.         public new void Dispose()
  39.         {
  40.             if (isRegistered)
  41.             {
  42.                 if (UnregisterHotkey())
  43.                     System.Diagnostics.Debug.WriteLine("Unreg: OK");
  44.             }
  45.             System.Diagnostics.Debug.WriteLine("Disposed");
  46.         }
  47.         #region Component Designer generated code
  48.         /// <summary>
  49.         /// Required method for Designer support - do not modify
  50.         /// the contents of this method with the code editor.
  51.         /// </summary>
  52.         private void InitializeComponent()
  53.         {
  54.             components = new System.ComponentModel.Container();
  55.         }
  56.         #endregion
  57.  
  58.         protected void MessageEvent(object sender, ref Message m, ref bool Handled)
  59.         {    //Handle WM_Hotkey event
  60.             if ((m.Msg == (int)Win32.Msgs.WM_HOTKEY) && (m.WParam == (IntPtr)this.GetType().GetHashCode()))
  61.             {
  62.                 Handled = true;
  63.                 System.Diagnostics.Debug.WriteLine("HOTKEY pressed!");
  64.                 if (Pressed != null) Pressed(this, EventArgs.Empty);
  65.             }
  66.         }
  67.  
  68.         protected bool UnregisterHotkey()
  69.         {    //unregister hotkey
  70.             return Win32.User32.UnregisterHotKey(m_Window.Handle, this.GetType().GetHashCode());
  71.         }
  72.  
  73.         protected bool RegisterHotkey(Shortcut key)
  74.         {    //register hotkey
  75.             int mod = 0;
  76.             Keys k2 = Keys.None;
  77.             if (((int)key & (int)Keys.Alt) == (int)Keys.Alt) { mod += (int)Win32.Modifiers.MOD_ALT; k2 = Keys.Alt; }
  78.             if (((int)key & (int)Keys.Shift) == (int)Keys.Shift) { mod += (int)Win32.Modifiers.MOD_SHIFT; k2 = Keys.Shift; }
  79.             if (((int)key & (int)Keys.Control) == (int)Keys.Control) { mod += (int)Win32.Modifiers.MOD_CONTROL; k2 = Keys.Control; }
  80.  
  81.             System.Diagnostics.Debug.Write(mod.ToString() + " ");
  82.             System.Diagnostics.Debug.WriteLine((((int)key) - ((int)k2)).ToString());
  83.  
  84.             return Win32.User32.RegisterHotKey(m_Window.Handle, this.GetType().GetHashCode(), (int)mod, ((int)key) - ((int)k2));
  85.         }
  86.  
  87.         public bool IsRegistered
  88.         {
  89.             get { return isRegistered; }
  90.         }
  91.  
  92.  
  93.         [DefaultValue(Shortcut.None)]
  94.         public Shortcut Shortcut
  95.         {
  96.             get { return m_HotKey; }
  97.             set
  98.             {
  99.                 if (DesignMode) { m_HotKey = value; return; }    //Don't register in Designmode
  100.                 if ((isRegistered) && (m_HotKey != value))    //Unregister previous registered Hotkey
  101.                 {
  102.                     if (UnregisterHotkey())
  103.                     {
  104.                         System.Diagnostics.Debug.WriteLine("Unreg: OK");
  105.                         isRegistered = false;
  106.                     }
  107.                     else
  108.                     {
  109.                         if (Error != null) Error(this, EventArgs.Empty);
  110.                         System.Diagnostics.Debug.WriteLine("Unreg: ERR");
  111.                     }
  112.                 }
  113.                 if (value == Shortcut.None) { m_HotKey = value; return; }
  114.                 if (RegisterHotkey(value))    //Register new Hotkey
  115.                 {
  116.                     System.Diagnostics.Debug.WriteLine("Reg: OK");
  117.                     isRegistered = true;
  118.                 }
  119.                 else
  120.                 {
  121.                     if (Error != null) Error(this, EventArgs.Empty);
  122.                     System.Diagnostics.Debug.WriteLine("Reg: ERR");
  123.                 }
  124.                 m_HotKey = value;
  125.             }
  126.         }
  127.     }
  128. }
  129.  
  130.  
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]:

Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace HotkeyNameSpace
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.         private System.Windows.Forms.Label label1;
  14.         //Making a new Hotkey.....
  15.         private Hotkey.SystemHotkey.SystemHotkey systemHotkey1;
  16.         private System.Windows.Forms.Label label2;
  17.         private System.ComponentModel.IContainer components;
  18.  
  19.         public Form1()
  20.         {
  21.             //
  22.             // Required for Windows Form Designer support
  23.             //
  24.             InitializeComponent();
  25.  
  26.             //
  27.             // TODO: Add any constructor code after InitializeComponent call
  28.             //
  29.         }
  30.  
  31.         /// <summary>
  32.         /// Clean up any resources being used.
  33.         /// </summary>
  34.         protected override void Dispose(bool disposing)
  35.         {
  36.             if (disposing)
  37.             {
  38.                 if (components != null)
  39.                 {
  40.                     components.Dispose();
  41.                 }
  42.             }
  43.             base.Dispose(disposing);
  44.         }
  45.  
  46.         #region Windows Form Designer generated code
  47.         /// <summary>
  48.         /// Required method for Designer support - do not modify
  49.         /// the contents of this method with the code editor.
  50.         /// </summary>
  51.         private void InitializeComponent()
  52.         {
  53.             this.components = new System.ComponentModel.Container();
  54.             this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);
  55.             this.label1 = new System.Windows.Forms.Label();
  56.             this.label2 = new System.Windows.Forms.Label();
  57.             this.SuspendLayout();
  58.             // 
  59.             // systemHotkey1
  60.             // 
  61.             this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
  62.             this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
  63.             // 
  64.             // label1
  65.             // 
  66.             this.label1.Location = new System.Drawing.Point(64, 16);
  67.             this.label1.Name = "label1";
  68.             this.label1.Size = new System.Drawing.Size(280, 96);
  69.             this.label1.TabIndex = 0;
  70.             this.label1.Text = "Waiting for events";
  71.             // 
  72.             // label2
  73.             // 
  74.             this.label2.Location = new System.Drawing.Point(72, 184);
  75.             this.label2.Name = "label2";
  76.             this.label2.Size = new System.Drawing.Size(240, 72);
  77.             this.label2.TabIndex = 1;
  78.             this.label2.Text = "Use the SystemHotkey Component in Windows Forms designer to modify the Hotkey. Pr" +
  79.                 "ess Ctrl+R to fire the Hotkey event";
  80.             // 
  81.             // Form1
  82.             // 
  83.             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  84.             this.ClientSize = new System.Drawing.Size(400, 286);
  85.             this.Controls.Add(this.label2);
  86.             this.Controls.Add(this.label1);
  87.             this.Name = "Form1";
  88.             this.Text = "Form1";
  89.             this.ResumeLayout(false);
  90.  
  91.         }
  92.         #endregion
  93.  
  94.         /// <summary>
  95.         /// The main entry point for the application.
  96.         /// </summary>
  97.         [STAThread]
  98.         static void Main()
  99.         {
  100.             Application.EnableVisualStyles();
  101.             Application.SetCompatibleTextRenderingDefault(false);
  102.             Application.Run(new Form1());
  103.         }
  104.  
  105.         private void systemHotkey1_Pressed(object sender, System.EventArgs e)
  106.         {
  107.             label1.Text = "Hotkey Pressed!";
  108.             MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  109.             this.Activate();
  110.             this.BringToFront();
  111.         }
  112.     }
  113. }
  114.  
  115.  
-------------
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.
Jun 10 '07 #3
Mague
137 100+
Hey how do u say if systemhotkey = Ctrl r or wat do i do
Jun 10 '07 #4
Atran
319 100+
Hey how do u say if systemhotkey = Ctrl r or wat do i do
Hello, in the Form1.cs, read line 61.
Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace HotkeyNameSpace
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.         private System.Windows.Forms.Label label1;
  14.         //Making a new Hotkey.....
  15.         private Hotkey.SystemHotkey.SystemHotkey systemHotkey1;
  16.         private System.Windows.Forms.Label label2;
  17.         private System.ComponentModel.IContainer components;
  18.  
  19.         public Form1()
  20.         {
  21.             //
  22.             // Required for Windows Form Designer support
  23.             //
  24.             InitializeComponent();
  25.  
  26.             //
  27.             // TODO: Add any constructor code after InitializeComponent call
  28.             //
  29.         }
  30.  
  31.         /// <summary>
  32.         /// Clean up any resources being used.
  33.         /// </summary>
  34.         protected override void Dispose(bool disposing)
  35.         {
  36.             if (disposing)
  37.             {
  38.                 if (components != null)
  39.                 {
  40.                     components.Dispose();
  41.                 }
  42.             }
  43.             base.Dispose(disposing);
  44.         }
  45.  
  46.         #region Windows Form Designer generated code
  47.         /// <summary>
  48.         /// Required method for Designer support - do not modify
  49.         /// the contents of this method with the code editor.
  50.         /// </summary>
  51.         private void InitializeComponent()
  52.         {
  53.             this.components = new System.ComponentModel.Container();
  54.             this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);  
  55.             this.label1 = new System.Windows.Forms.Label();
  56.             this.label2 = new System.Windows.Forms.Label();
  57.             this.SuspendLayout();
  58.             // 
  59.             // systemHotkey1
  60.             // 
  61.             this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
  62.             this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
  63.             // 
  64.             // label1
  65.             // 
  66.             this.label1.Location = new System.Drawing.Point(64, 16);
  67.             this.label1.Name = "label1";
  68.             this.label1.Size = new System.Drawing.Size(280, 96);
  69.             this.label1.TabIndex = 0;
  70.             this.label1.Text = "Waiting for events";
  71.             // 
  72.             // label2
  73.             // 
  74.             this.label2.Location = new System.Drawing.Point(72, 184);
  75.             this.label2.Name = "label2";
  76.             this.label2.Size = new System.Drawing.Size(240, 72);
  77.             this.label2.TabIndex = 1;
  78.             this.label2.Text = "Use the SystemHotkey Component in Windows Forms designer to modify the Hotkey. Pr" +
  79.                 "ess Ctrl+R to fire the Hotkey event";
  80.             // 
  81.             // Form1
  82.             // 
  83.             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  84.             this.ClientSize = new System.Drawing.Size(400, 286);
  85.             this.Controls.Add(this.label2);
  86.             this.Controls.Add(this.label1);
  87.             this.Name = "Form1";
  88.             this.Text = "Form1";
  89.             this.ResumeLayout(false);
  90.  
  91.         }
  92.         #endregion
  93.  
  94.         /// <summary>
  95.         /// The main entry point for the application.
  96.         /// </summary>
  97.         [STAThread]
  98.         static void Main()
  99.         {
  100.             Application.EnableVisualStyles();
  101.             Application.SetCompatibleTextRenderingDefault(fals  e);
  102.             Application.Run(new Form1());
  103.         }
  104.  
  105.         private void systemHotkey1_Pressed(object sender, System.EventArgs e)
  106.         {
  107.             label1.Text = "Hotkey Pressed!";
  108.             MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  109.             this.Activate();
  110.             this.BringToFront();
  111.         }
  112.     }
  113. }
  114.  
We can say: [Express Way]
Expand|Select|Wrap|Line Numbers
  1. this.components = new System.ComponentModel.Container();
  2. //Make a new hotkey.
  3. this.systemHotkey1 = new Hotkey.SystemHotkey.SystemHotkey(this.components);
  4. //Make a key to the hotkey.
  5. this.systemHotkey1.Shortcut = System.Windows.Forms.Shortcut.CtrlR; //Here make your own Hotkey.
  6. //Make an pressing event handler.
  7. this.systemHotkey1.Pressed += new System.EventHandler(this.systemHotkey1_Pressed);
  8.  
And:
Expand|Select|Wrap|Line Numbers
  1. //If the hotkey pressed, do an action.
  2. private void systemHotkey1_Pressed(object sender, System.EventArgs e)
  3.         {
  4.             label1.Text = "Hotkey Pressed!";
  5.             MessageBox.Show("Hotkey pressed...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  6.             this.Activate();
  7.             this.BringToFront();
  8.         }
  9.  
Hope this help you.
Jun 11 '07 #5

Sign in to post your reply or Sign up for a free account.

Similar topics

3
by: paul francis | last post by:
Hi Please help because I'm really stuck: I'm trying to write an application in C# which can be used to track the mouse pointer position on any window. I'm trying to use a Global mouse hook to...
2
by: Alex | last post by:
I am trying to determine if C# has the capabilities to listen for system events when the application does not have the window's focus. I am writing a windows application that I would like to run...
5
by: Jim Hubbard | last post by:
I don't think you can hook system events outside your application in .Net without using an unmanaged DLL, but I thought I'd ask. Jim Hubbard
3
by: Patrick | last post by:
I have been developing in VB6 for years. I am converting to VB.net. I was wondering if it is possible to create a System hook in VB.net. I know that I VB6, I could not, so I created one in C++. ...
0
by: leslie_tighe | last post by:
Hello, I need to build the following functionality into my application and wanted to see if the System journal hooks were the right way to approach this problem? If not, I would appreciate any...
3
by: cichy83 | last post by:
Hi! I have a problem with global hooks under these two OS. I'm using three following types of hooks: CBT Hokk, Keyboard Hook, Mouse Hooks. I'm using BCB 6, under Win XP everything works fine...
13
by: Hema | last post by:
hello all, I am working on a project related to Internet Explorer. I want my application to be invoked by a keypress( single key stroke or a combination). But this must get invoked only when the...
0
Mague
by: Mague | last post by:
Hey, I've looked up system hooks but i cannot find how to use key hooks on Visual Studio 2005. I want to use system hook to detect if Ctrl R to start a pitucalar part of the program and Ctrl S to...
0
by: Jared Goralnick | last post by:
Hi, I'm in the process of developing some high-level specs for an application. Some of the functionality of this application involves intercepting Windows access to certain applications or...
22
by: schneider | last post by:
I need to hook the system mouse down event. I'm trying to replicate how a context menu hides when the mouse clicks outside of the control. Thanks, Schneider
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.