I'm looking for some code (preferably C#) that will prevent keyboard and mouse input.
How can I block keyboard and mouse input in C#?
Can you give some more context as to why you would want to do this? –
Cuticula
Do you mean only in your application or globally across the system? –
Brazen
And to what; after all, you could be referring to a textbox, which setting the readonly property would do it. –
Sphingosine
Sorry I wish to block input globally –
Vaunting
Expanding on Josh's (correct) answer. Here's the PInvoke signature for that method.
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
Added some code to demonstrate how to block for an interval
Many thanks for this. Do you have any code which uses this signature? For example block input, wait for 30 seconds, re-enable input. Thanks –
Vaunting
Take a look at the Managed Windows API, it might have something that wraps this functionality already. mwinapi.sourceforge.net –
Alroy
@Matt, i usually just grab the sig from the PInvoke Interop Assistant codeplex.com/clrinterop –
Cuticula
@Cuticula I didn't work in my application! does it work on win 7? –
Elliellicott
I gave this a shot and it did not work. Does it require privilege elevation? –
Erk
It does require privileges for obvious reasons (you're blocking most input from the user - control-alt-del and maybe a few others will still work) –
Aila
This worked for me but I wanted to disable only Keyboard and mouse and support touch. BlockInput blocks everything. Does this accepts any parameter for type of input? –
Skidway
Can someone explain how to make this work at all? It doesn't block anything for me but apparently works for others. –
Underbodice
@Underbodice it also doesn't work for me, but if I run the app with Administrator rights - it works fine. It can be disabled by pressing Ctrl+Alt+Del. pinvoke.net/default.aspx/user32.blockinput –
Eulau
Look into the BlockInput Win32 function
Sounds like some fun testing :)
Can I have only specific type of inputs to be blocked? Like only keyboard and mouse. –
Skidway
using System.Runtime.InteropServices;
public partial class NativeMethods
{
[DllImport("user32.dll", EntryPoint = "BlockInput")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool BlockInput([MarshalAs(UnmanagedType.Bool)] bool fBlockIt);
}
internal
is not public
. So it does not fall into the CA1401
A public or protected method in a public type has the System.Runtime.InteropServices.DllImportAttribute attribute
© 2022 - 2024 — McMap. All rights reserved.