Detecting Mouse-Clicks Globally

This code sample shows how to detect a mouse click anywhere on the desktop and on any window.

screen-shot

The code works by utilising the GetAsyncKeyState API call that can check the status of keyboard and mouse input at any point in a programs processing.

A form is used with a timer that fires every 10th of a second to check for the VK_LBUTTON and VK_RBUTTON keystates (the left and right mouse buttons).


option Explicit

private Declare Function GetAsyncKeyState Lib "user32" _
        (byval vKey as Long) as Integer
private Const VK_LBUTTON = &H1
private Const VK_RBUTTON = &H2

private Sub Form_Load()
    Timer1.Interval = 100
End Sub

private Sub Timer1_Timer()
    If GetAsyncKeyState(VK_LBUTTON) then
        Label2.Caption = "Left Click"
    ElseIf GetAsyncKeyState(VK_RBUTTON) then
        Label2.Caption = "Right Click"
    else
        Label2.Caption = ""
    End If
End Sub
'

Download Zipped Project (3k)



Comments

  • Stopping the fired event

    Posted by Legacy on 09/14/2003 12:00am

    Originally posted by: Gil Groman


    Great Utility!

    I would like to add to it the capability to stop the mouse click event.
    For example when clicking on the task bar the task button will not restore an application if my VB program will not
    allow it.
    And what about the Title bar? could it be supported too?

    Reply
  • Mouse Co-Ordinates

    Posted by Legacy on 08/23/2003 12:00am

    Originally posted by: Ram


    Hi,

    Good work1.But how to get the mouse coordinates when the user clicks on the window in this case(VK_LBUTTON)

    Thnks

    Reply
  • Keyboard status?

    Posted by Legacy on 07/10/2003 12:00am

    Originally posted by: Phil Johnstone

    You mentioned in your tutorial that 'GetAsyncKeyState API call that can check the status of keyboard and mouse input' I was just wondering how you get the status of the keyboard using that API. Thanks in advance.

    Reply
  • Awesome stuff

    Posted by Legacy on 01/08/2003 12:00am

    Originally posted by: Anthony Gill

    Thanks for the code! I was dreading the task of digging through my Win32 API tome. :) Works perfect!

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • On-demand Event Event Date: September 10, 2014 Modern mobile applications connect systems-of-engagement (mobile apps) with systems-of-record (traditional IT) to deliver new and innovative business value. But the lifecycle for development of mobile apps is also new and different. Emerging trends in mobile development call for faster delivery of incremental features, coupled with feedback from the users of the app "in the wild." This loop of continuous delivery and continuous feedback is how the best mobile …

  • Java developers know that testing code changes can be a huge pain, and waiting for an application to redeploy after a code fix can take an eternity. Wouldn't it be great if you could see your code changes immediately, fine-tune, debug, explore and deploy code without waiting for ages? In this white paper, find out how that's possible with a Java plugin that drastically changes the way you develop, test and run Java applications. Discover the advantages of this plugin, and the changes you can expect to see …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds