65.9K
CodeProject is changing. Read more.
Home

How to lock keyboard and mouse on XP

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.79/5 (18 votes)

Sep 7, 2004

viewsIcon

256049

This is a simple explanation - how to lock the keyboard and mouse.

Introduction

I decided to write this article because it took me a long time to find an answer to this question, and surprisingly, most places I searched gave me the answer that this task is impossible on XP!

Well, it is possible!!!

Locking the keyboard and mouse and using SendKeys to an application window

Here is a simple VB.NET code which demonstrates how to do this:

' must have this in order to use the SendKeys function
Imports System.Windows.Forms
  
Public Class WinControl

   ' This is the function used in order to block the keyboard and mouse:
    Declare Function BlockInput Lib "User32" _
           (ByVal fBlockIt As Boolean) As Boolean
    ' This function will block the keyboard and mouse untill a window with
    ' the specify caption will appear or the given time in seconds has 
    ' past ( 0 seconds - wait forever).
    ' If the window with the caption appears than the given key is send 
    ' to it and the input block is removed.
    Public Shared Function Wait2Send(ByVal caption As String, _
              ByVal keys As String, ByVal seconds As Integer)

    ' Indicates if the window with the given caption was found
        Dim success As Boolean = False

    ' Start time of the function
        Dim now As DateTime = DateTime.Now

    ' Begining of keyboard and mouse block
        BlockInput(True)

        While (success = False And (DateTime.Now.Subtract(now).Seconds _
                                               < seconds Or seconds = 0))
            Try
                ' Activating the window with desired function
                ' if the window is not found an exception is thrown.
                AppActivate(caption)

                ' Sending desired key stroke to the application window
                SendKeys.SendWait(keys)

                ' Indicates the window was found and keys sent
                success = True

            Catch
                ' Assuming window was not found and sleep for 100 miliseconds
                System.Threading.Thread.Sleep(100)
            End Try
        End While
    ' Release the keyboard block
        BlockInput(False)

    End Function

End Class

Here is an example of using this function:

WinControl.Wait2Send("Calculator","22*22{ENTER}",30);

In this example, the function will wait 30 seconds for some application window with the caption: "Calculator" to appear. While waiting, it locks the keyboard and mouse.

If such an application window exists or will appear in the given 30 seconds, it will be given the key stroke - 22*22 and then the ENTER special key. If you activate your calculator, you will get the result to this calculation.

You can get further help on: