Je cherche du code (de préférence C#) qui empêchera la saisie au clavier et à la souris.Comment puis-je bloquer l'entrée du clavier et de la souris en C#?
Répondre
Regardez dans la fonction Win32 BlockInput
Ça a l'air comme un test amusant :)
Puis-je bloquer uniquement certains types d'entrées? Comme seulement le clavier et la souris. – Kishori
expansion sur la réponse de Josh (correct). Voici la signature PInvoke pour cette méthode.
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
ajouté du code pour montrer comment bloquer pendant un intervalle
Un grand merci pour cela. Avez-vous un code qui utilise cette signature? Par exemple, bloquer l'entrée, attendre 30 secondes, réactiver l'entrée. Merci –
Jetez un coup d'œil à l'API Managed Windows, il y a peut-être quelque chose qui enveloppe déjà cette fonctionnalité. http://mwinapi.sourceforge.net/ –
@Matt, je prends habituellement la signature de l'assistant PInvoke Interop http://www.codeplex.com/clrinterop – JaredPar
Jetez un oeil à cet article Processing Global Mouse and Keyboard Hooks in C#. Le gars qui a écrit cet article a fait beaucoup de recherches sur le problème.
Peut-être qu'il y a quelque chose que vous pouvez utiliser.
Pouvez-vous donner un peu plus de contexte quant à la raison pour laquelle vous voulez faire cela? – JaredPar
Voulez-vous dire uniquement dans votre application ou globalement à travers le système? –
Et à quoi? après tout, vous pourriez faire référence à une zone de texte, qui définirait la propriété readonly le ferait. –