Here is a sample to add shortcut keys or hotkeys for winform app in C# code.
GlobalHotkeys.cs
using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Hotkeys { public class GlobalHotkey { private int modifier; private int key; private IntPtr hWnd; private int id; public GlobalHotkey(int modifier, Keys key, Form form) { this.modifier = modifier; this.key = (int)key; this.hWnd = form.Handle; id = this.GetHashCode(); } public bool Register() { return RegisterHotKey(hWnd, id, modifier, key); } public bool Unregiser() { return UnregisterHotKey(hWnd, id); } public override int GetHashCode() { return modifier ^ key ^ hWnd.ToInt32(); } [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk); [DllImport("user32.dll")] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); } }
CodeBehind WinForm
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Hotkeys; namespace HotkeyWin { public partial class Form1 : Form { private Hotkeys.GlobalHotkey ghk; public Form1() { InitializeComponent(); ghk = new Hotkeys.GlobalHotkey(Constants.ALT + Constants.SHIFT, Keys.O, this); } private void HandleHotkey() { WriteLine("Hotkey pressed!"); } protected override void WndProc(ref Message m) { if (m.Msg == Hotkeys.Constants.WM_HOTKEY_MSG_ID) HandleHotkey(); base.WndProc(ref m); } private void Form1_Load(object sender, EventArgs e) { WriteLine("Trying to register SHIFT+ALT+O"); if (ghk.Register()) WriteLine("Hotkey registered."); else WriteLine("Hotkey failed to register"); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (!ghk.Unregiser()) MessageBox.Show("Hotkey failed to unregister!"); } private void WriteLine(string text) { textBox1.Text += text + Environment.NewLine; } } }
Output
By Mohd Zulkamal
NOTE : – If You have Found this post Helpful, I will appreciate if you can Share it on Facebook, Twitter and Other Social Media Sites. Thanks =)
0 comments:
Post a Comment