registerhotkey (user32)
Last changed: -86.11.174.174

.
Summary

C# Signature:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
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
        // 1 is a random identifier(and can be any thing you wish) of the hot key.
        // No other hot key in the calling thread should have the same identifier.
        // An application must specify a value in the range 0x0000 through 0xBFFF
        RegisterHotKey( this.Handle, 1, 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, 1 );//1 informs UnregisterHotKey to unregister the hotkey with identifier 1
    }

Alternative Managed API:

The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a

Hotkey class to register global hotkeys.

Documentation