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

  • Today, users, applications, and data exist in more places than ever before, creating an unprecedented challenge for IT. How can IT achieve the flexibility and agility it needs to offer multiple types of applications in multiple locations? To better serve business demands for information everywhere, enterprises must develop new strategies for optimizing multiple kinds of networks. Read this white paper to learn how hybrid networks provide an unprecedented level of network dynamism, enterprise agility, and the …

  • It's often said that data is the lifeblood of many businesses, yet many organizations continue to struggle with keeping their data safe -- safe from system crashes, human error, and natural disasters. There are two major factors preventing most businesses from adequately protecting their data: complexity and inefficiency. The combination of complexity and inefficiency leads to increased risk for the organization. It means more software licenses are required, specific skillsets are needed from employees, and …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date