Dicas .NET - Criando atalhos de teclado para sua aplicação

Veja nessa dica, como criar teclas de atalhos para sua aplicação Windows Forms.

Criando atalhos de teclado para sua aplicação

Criar atalhos para funções da aplicação quando a aplicação está com o foco é tarefa simples.

O complicado é criar atalhos para a aplicação que funcionem quando a aplicação não está com o foco. Isso é possível através de uma função da API do sistema operacional : RegisterHotKey

Veja um exemplo de como funciona:

 

[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 );

}

 

Fazemos um DLLImport para que possamos fazer uso das funções register e unregisterHotkey.  No Load, chamamos o register, no closing o unregister.

Fazemos um override na função WndProc para recebermos e processarmos a mensagem de hotKey. Pronto. Nossa aplicação tem uma tecla de atalho registrada com o sistema operacional.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados