RegisterHotKey (user32)
Last changed: -86.11.174.174

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers,
   uint vk);

VB Signature:

<DllImport("user32.dll")> _
Public Shared Function RegisterHotKey(ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    [DllImport("user32")]
    public static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
    [DllImport("user32.dll")]
    static extern bool UnregisterHotKey(IntPtr hWnd, int id);
    private const int MOD_ALT = 0x1;
    private const int MOD_CONTROL = 0x2;
    private const int MOD_SHIFT = 0x4;
    private const int MOD_WIN = 0x8;
    private const int WM_HOTKEY = 0x312;

    public frmMain()
    {
        // Assigns the hotkey WIN+T
        // 42 is (as always) a magic number
        RegisterHotKey( this.Handle, 42, MOD_WIN, (int)Keys.T );
    }

    protected override void WndProc(ref Message m)
    {
        base.WndProc (ref m);
        if( m.Msg == WM_HOTKEY )
        {
            if( !this.Visible )
                this.Visible = true;
            this.Activate();
        }
    }

    private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        UnregisterHotKey( this.Handle, 42 );
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation