473,671 Members | 2,473 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

System Hooks

Mague
137 New Member
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 2561
kenobewan
4,871 Recognized Expert Specialist
Here is an article that may help:
Global System Hooks in .NET
Jun 10 '07 #2
Atran
319 Contributor
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.c s 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 New Member
Hey how do u say if systemhotkey = Ctrl r or wat do i do
Jun 10 '07 #4
Atran
319 Contributor
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
12585
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 do this but with limited success. According to the documentation (as I understand it) you can only do Global hooks in ..Net if the delegate procedure passed to SetWindowsHookEx is external.
2
14304
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 in the background when I am using my computer. I would like this windows application to utilize the clipboard, and determine when data has changed on the clipboard. I would also like my app to listen for Ctrl+C and Ctrl+V events, as well as mouse...
5
1928
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
4205
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++. If it is possible, could you please provide an example. Thanks! Also, could you please provide good resources (books or online articles/tutorials) that would be good for someone who is advanced VB6 programmer converting to VB.net. Thanks!
0
1355
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 suggestions. 1) I need to be able to define fields on a screens on a variety mediums - ie. web pages, java applications, windows app, etc. the values for these fields will come from my database
3
2251
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 (functions are in dll of course, etc.). But under Win 98 my program (without any communicates) execute normal, but not working at all.
13
3186
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 IE browser is open. I learnt that SetWindowsHookEx must be used along with few others. But my doubt is how to call my application? Can i implement the keyboard hooks related methods in the same project as my application or should this be else...
0
842
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 stop that part of the program Ty in advance Mague
0
1133
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 websites, much like a "Net Nanny" would restrict children from accessing certain video games or adult websites. In my very limited experience, System Hooks and Win32 coding could be used to accomplish this in XP. I had a lot of trouble learning what...
22
6413
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
8927
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8825
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8605
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8676
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
6237
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5703
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4227
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4416
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2819
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

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.