BlockInput (user32)
Last changed: -178.213.5.120

.
Summary

C# Signature:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]

public static extern bool BlockInput([In, MarshalAs(UnmanagedType.Bool)] bool fBlockIt);

VB.Net Signature:

Declare Function BlockInput Lib "user32" (ByVal unBlockIt As Boolean) As Boolean

Or use:

    ''' <summary>The BlockInput function unblocks 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 unblocked. 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 thatunblocked input can successfully unblock input</remarks>
    <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall, SetLastError:=True)> _
    Public Shared Function BlockInput(ByVal fBlockIt As Integer) As Integer
    End Function

Note that this definition does use Boolean input and return types

User-Defined Types:

None.

Notes:

Blocks or unblocks mouse and keyboard input.

Can be disabled by pressing Alt+Ctrl+Del.

Tips & Tricks:

Useful to create a temporary unblock in input for sensitive GUI operations. For instance when manually activating a screen saver from within a GUI function, a short unblocking 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 = UnBlockInput(makeDisabled)
   End Sub
End Class

Alternative Managed API:

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

Documentation
BlockInput on MSDN