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

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.
 
G

Guest

if you want to get a mouseclick event, just hook the mouse so it will tell
you whenever the mouse button is clicked
 
A

Ahmed

That's true when you click on the form. But if you click outside the
form the even doesn't capture mouse events.
 
G

Guest

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
 
A

Ahmed

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top