All pastes #424600 Raw Edit

Untitled

public text v1 · immutable
·published 2007-04-04 22:12 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace ULR
{
    class Hotkey : System.Windows.Forms.Form 
    {
        [DllImport("user32.dll")]
        private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
        [DllImport("user32.dll")]
        private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

        public const int MOD_ALT = 0x1;
        public const int MOD_CONTROL = 0x2;
        public const int MOD_SHIFT = 0x4;
        public const int MOD_WIN = 0x8;
        

        private const int WM_HOTKEY = 0x312;

        public delegate void OnHotkeyHandler();
        public event OnHotkeyHandler OnHotkey;

        private static int _identifier = 0;
        private int identifier = -1;

        public Hotkey(int modifiers, int vk)
        {
            this.Visible = false;

            identifier = ++_identifier;

            RegisterHotKey(this.Handle, identifier, modifiers, vk);
        }

        protected override void Dispose(bool disposing)
        {

            if (disposing)
            {
                UnregisterHotKey(this.Handle, identifier);
            }

            base.Dispose(disposing);
        }

        protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            base.WndProc(ref m);

            if (m.Msg == WM_HOTKEY)
            {
                if (OnHotkey != null)
                {
                    OnHotkey();
                }
            }
        }
    }
}