Capturing mouse events (Mouse up and down on the desktop)

  • Thread starter Thread starter Ahmed
  • Start date Start date
A

Ahmed

Hi,

I am trying to capture the mouse events when the user clicks on the
desktop not the winform. I looked at the mouse_event function but MSDN
documentation says that it is suppressed in win NT/2000/XP. What I am
trying to do is to get print screen for a section on the desktop every
number of seconds. And I want the user to be able to select that
region.

Any help will be appreciated.
 
if you want to get a mouseclick event, just hook the mouse so it will tell
you whenever the mouse button is clicked
 
That's true when you click on the form. But if you click outside the
form the even doesn't capture mouse events.
 
sorry for not being clear, i meant put a mouse hook on the formload event.
then you can receive every mouse click....ex:



Private Const HC_ACTION As Integer = 0
Private Const WH_MOUSE_LL As Integer = 14
Private Const WM_LBUTTONDOWN As Integer = &H201
Private Const WM_MOUSEWHEEL As Integer = &H20A

Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" ( _
ByVal idHook As Integer, _
ByVal lpfn As LowLevelMouseProcDelegate, _
ByVal hmod As Integer, _
ByVal dwThreadId As Integer) As Integer

Private Declare Function CallNextHookEx Lib "user32" ( _
ByVal hHook As Integer, _
ByVal nCode As Integer, _
ByVal wParam As Integer, _
ByVal lParam As MSLLHOOKSTRUCT) As Integer

Private Declare Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As Integer) As Integer

Private Function LowLevelMouseProc( _
ByVal nCode As Integer, _
ByVal wParam As Integer, _
ByVal lParam As MSLLHOOKSTRUCT) As Integer

If (nCode = HC_ACTION) Then

If wParam = WM_LBUTTONDOWN Then

''do something on left mouse click

End If

Return CallNextHookEx(hhkLowLevelMouse, _
nCode, wParam, lParam)

End If

End Function

Private Delegate Function LowLevelMouseProcDelegate( _
ByVal nCode As Integer, _
ByVal wParam As Integer, _
ByVal lParam As MSLLHOOKSTRUCT) As Integer


''set mouse hook
Public Sub DisableMouse()

'Set Mouse Hook
hhkLowLevelMouse = SetWindowsHookEx(WH_MOUSE_LL, _
AddressOf LowLevelMouseProc, _

Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32, _
0)

End Sub


''release hook
Public Sub EnableMouse()

'Release Mouse Hook
UnhookWindowsHookEx(hhkLowLevelMouse)

End Sub


hope this helps
 
Thanks alot. I think that almost did that trick except it is generating
an exception when reaching line:

Return CallNextHookEx(hhkLowLevelMouse, _
nCode, wParam, lParam)


That exception was about Stack. I will post the full exception message
when I get home.

Thanks again.
 
Back
Top