Sto cercando un codice (preferibilmente C#) che impedisca l'input da tastiera e mouse.Come posso bloccare l'input della tastiera e del mouse in C#?
risposta
Guardate nella funzione BlockInput Win32
Suona come un certo divertimento test :)
Posso avere solo tipi specifici di ingressi da bloccare? Come solo tastiera e mouse. – Kishori
Ampliando (corretta) la risposta di Josh. Ecco la firma PInvoke per quel metodo.
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);
}
}
EDIT
aggiunto un po 'di codice per dimostrare come bloccare per un intervallo
Mille grazie per questo. Avete qualche codice che usi questa firma? Ad esempio, inserire il blocco, attendere 30 secondi, riattivare l'input. Grazie –
Dai un'occhiata all'API di Windows gestito, potrebbe avere qualcosa che avvolge già questa funzionalità. http://mwinapi.sourceforge.net/ –
@Matt, di solito prendo il sig dall'Interop Assistant PInvoke http://www.codeplex.com/clrinterop – JaredPar
Date un'occhiata a questo articolo Processing Global Mouse and Keyboard Hooks in C#. Il tizio che ha scritto questo articolo ha fatto molte ricerche sul problema.
Forse c'è qualcosa che puoi usare.
Puoi dare qualche altro contesto sul perché vorresti farlo? – JaredPar
Intendi solo nella tua applicazione o in tutto il sistema? –
E a cosa; dopo tutto, potreste riferirvi a una casella di testo, che l'impostazione della proprietà readonly lo farebbe. –