none
como bloquear teclado e mouse RRS feed

  • Pergunta

  • Pessoal, preciso bloquear o teclado e o mouse enquanto minha aplicação esta sendo atualizada, alguem tem alguma dica ou codigo de como bloquear teclado e mouse ?
    alessandre
    quarta-feira, 29 de junho de 2011 23:31

Respostas

Todas as Respostas

  • Bom espero que isso te ajude, BlockInput:
    http://msdn.microsoft.com/en-us/library/ms646290


    Segue abaixo um exemplo:

    Declare Function BlockInput Lib "User32" (ByVal fBlockIt As Boolean) As Boolean
    
    'Bloqueia teclado e mouse
    BlockInput(True)
    
    'Desbloqueia teclado e mouse
    BlockInput(False) 
     

    Exemplo completo:

    Imports System.Windows.Forms
     
    Public Class WinControl
    
     'This is the function used in order to block the keyboard and mouse:
     Declare Function BlockInput Lib "User32" (ByVal fBlockIt As Boolean) As Boolean
    
     'This function will block the keyboard and mouse untill a window with
     'the specify caption will appear or the given time in seconds has 
     'past ( 0 seconds - wait forever).
     'If the window with the caption appears than the given key is send 
     'to it and the input block is removed.
     Public Shared Function Wait2Send(ByVal caption As String, ByVal keys As String, ByVal seconds As Integer)
    
     'Indicates if the window with the given caption was found
     Dim success As Boolean = False
    
     'Start time of the function
     Dim now As DateTime = DateTime.Now
    
     'Begining of keyboard and mouse block
     BlockInput(True)
    
     While (success = False And (DateTime.Now.Subtract(now).Seconds < seconds Or seconds = 0))
      Try
      'Activating the window with desired function
    
      'if the window is not found an exception is thrown.
      AppActivate(caption)
    
      'Sending desired key stroke to the application window
      SendKeys.SendWait(keys)
    
      'Indicates the window was found and keys sent
      success = True
    
      Catch
      'Assuming window was not found and sleep for 100 miliseconds
    
      System.Threading.Thread.Sleep(100)
      End Try
     End While
    
     	'Release the keyboard block
     BlockInput(False)
     End Function
    End Class
    

    http://www.codeproject.com/KB/vb/LockKeyboard.aspx

     



    • Sugerido como Resposta Eduardo Cury quinta-feira, 30 de junho de 2011 03:23
    quinta-feira, 30 de junho de 2011 00:30
  • alessandre,

    Acho que seria o caso de bloquer o input somente na sua aplicação.

    O jeito mais simples seria você setar a propriedade Enabled do seu form para False, assim o seu usuário não conseguiria "interagir" com a sua aplicação.

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    • Marcado como Resposta alessandre quinta-feira, 30 de junho de 2011 16:22
    quinta-feira, 30 de junho de 2011 11:20
    Moderador
  • valeu galera, vou testar as duas formas, agradeço pela ajuda
    alessandre
    quinta-feira, 30 de junho de 2011 16:22
  • Olá Eduardo,

    O BlockInput funcionou perfeitamente, mas ele bloqueia apenas a interação com a minha aplicação. Gostaria de saber se tem alguma maneira de ele funcionar com todo o windows até que minha aplicação rode uma determinada tarefa.

    Obrigado

    Janaílton Gonçalves

    sexta-feira, 17 de janeiro de 2014 21:35