BlockInput (user32)
Last changed: -178.213.5.120

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern bool BlockInput(bool fBlockIt);

VB.Net Signature:

Declare Fuhhhhhon BlockInput Lib "user32" (ByVal fBlockIt As Boolean) As Boolean

Or use:

    ''' <summary>The BlockInput function blocks keyboard and mouse input events from reaching applications
    ''' </summary>
    ''' <param name="fBlockIt">[in] Specifies the function's purpose. If this parameter is non-zero, keyboard
    ''' and mouse input events are blocked. If this parameter is zero, keyboard and mouse events are unblocked.
    ''' </param>
    ''' <returns>If the function succeeds, the return value is nonzero.
    ''' If input is already blocked, the return value is zero.
    ''' To get extended error information, call Marshal.GetLastWin32Error()</returns>
    ''' <remarks>Note that only the thread that blocked input can successfully unblock input</remarks>
    <DllImport("user32.dll", EntryPoint:="BlockInput", SetLastError:=True, CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Friend Shared Function BlockInput(fBlockIt As Boolean) As Integer
    End Function

Note that this definition does not use Boolean input and return types

Notes:

This method requires administrator rights.

Blocks or unblocks mouse and keyboard input.

Can be disabled by pressing Ctrl+Alt+Del.

Tips & Tricks:

Useful to create a temporary block in input for sensitive GUI operations. For instance when manually activating a screen saver from within a GUI function, a short blocking delay will prevent the user mouse movements directly after selection from accidently escaping the screen saver.

Sample Code:

VB.Net:
Class BlockInput

    <DllImport("user32.dll", EntryPoint:="BlockInput", SetLastError:=True, CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>
    Friend Shared Function BlockInput(fBlockIt As Boolean) As Boolean
    End Function

   Friend Shared Function DisableInput(makeDisabled As Boolean) as Boolean
      Return BlockInput(makeDisabled)
   End Function

End Class

Alternative Managed API:

The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides an InputBlocker class that can block input.

Documentation
BlockInput on MSDN