2009-02-25 51 views
10

Estoy buscando algún código (preferiblemente C#) que evitará la entrada del teclado y el mouse.¿Cómo puedo bloquear la entrada del teclado y el mouse en C#?

+0

¿Puede dar algún contexto más de por qué usted quiere hacer esto? – JaredPar

+0

¿Quiere decir solo en su aplicación o globalmente en todo el sistema? –

+0

Y a qué; después de todo, podría estarse refiriendo a un cuadro de texto, que establecería la propiedad readonly lo haría. Lo sentimos –

Respuesta

7

mirada en la función Win32 BlockInput

Suena como algunas pruebas divertido :)

+0

¿Puedo tener solo tipo específico de entradas a ser bloqueado? Como solo teclado y mouse. – Kishori

19

Ampliando la respuesta de Josh (correcto). Aquí está la firma PInvoke para ese método.

public partial class NativeMethods { 

    /// Return Type: BOOL->int 
    ///fBlockIt: BOOL->int 
    [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint="BlockInput")] 
    [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] 
public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt) ; 

} 

public static void BlockInput(TimeSpan span) { 
    try { 
    NativeMethods.BlockInput(true); 
    Thread.Sleep(span); 
    } finally { 
    NativeMethods.BlockInput(false); 
    } 
} 

EDITAR

añadido algo de código para demostrar cómo bloquear durante un intervalo

+1

Muchas gracias por esto. ¿Tiene algún código que use esta firma? Por ejemplo, entrada de bloque, espere 30 segundos, vuelva a habilitar la entrada. Gracias –

+0

Echa un vistazo a la API de Windows Gestionado, que podría tener algo que envuelve esta funcionalidad ya. http://mwinapi.sourceforge.net/ –

+0

@ Matt, por lo general sólo agarrar el sig de la interoperabilidad Asistente PInvoke http://www.codeplex.com/clrinterop – JaredPar

Cuestiones relacionadas