Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

24 de setembro de 2015

Bloquear mouse e teclado C#


Quando estamos executando algum método, consulta ou algo que demore a retornar é possível que o usuário tecle ou clique em algo que atrapalhe a execução.
Aqui irei mostrar uma das formas de bloquear o mouse e o teclado do usuário na aplicação enquanto ela executa alguma função.
Utilizaremos o método BlockInput que está na USER32, então teremos que importá-lo, ele não retorna nenhuma valor e recebe como parâmetro um boleano indicando bloqueio quando true e desbloqueio quando false, como segue abaixo.

[DllImport("USER32.DLL")]
public static extern void BlockInput(bool block);

Feito isso é só chamar este método passando o parâmetro boleano true quando quiser bloquear e passar o parâmetro false quando quiser desbloquear.
Veja no exemplo.

BlockInput(true);
MetodoPesquisaClientesBanco(string cpf);
BlockInput(false);

Pronto enquanto eu executo o método de pesquisa de clientes no banco através do CPF o teclado e o mouse do usuário ficarão bloqueados na aplicação.
Obs. O usuário ainda poderá utilizar algumas funções do teclado como pressionar Ctrl + Alt + Del por exemplo.

2 comentários:

  1. mano, eu consigo colocar uma excessao no blockinput? eu quero bloquear todo o teclado mas permitir o acesso a uma tecla (ou algumas) para que o usuário precise apertar uma tecla para ter acesso a todo o teclado, é possível fazer isso ou existe outro método mais especifico?

    ResponderExcluir
    Respostas
    1. Esse método bloqueia todas as teclas, você teria que criar um método que verifique as teclas que deseja, as que não deseja que o usuário utilize poderia dar uma pesquisada em usar o Handle

      Excluir