Показать сообщение отдельно

  #2  
Старый 04.02.2008, 23:11
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

API: user32.dll --> RegisterHotKey() ...

Код:
 [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()
    {
        // Например хоткей WIN+T
        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 );
    }