BlockInput (user32)
Last changed: -178.213.5.120

.
Summary

C# Signature:

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

VB.Net Signature:

Declare Function 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 <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function

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

User-Defined Types:

None.

Notes:

This method requires administrator rights.

Blocks or unblocks mouse and keyboard input.

Can be disabled by pressing Alt+Ctrl+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 DK
   Declare Function BlockInput Lib "user32" (ByVal fBlockIt As Boolean) As Boolean

   Public Shared Sub DisableInput(ByVal makeDisabled As Boolean)
      Dim n As Boolean = BlockInput(makeDisabled)
   End Sub
End Class

Alternative Managed API:

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

Documentation
BlockInput on MSDN