3

I am looking for a method to get a button press event, something similar like this which is used to retrieve a pointer right after an event is fired. The button I mean is located on any particular windows application I set as a target (.eg windows media player's Play button). If you know what message to catch right after I click the Play button.

Dyppl
  • 12,161
  • 9
  • 47
  • 68
Pevus
  • 163
  • 4
  • 10

2 Answers2

3

What you are looking for is Global Mouse Hook. You can take a look at this article: Processing Global Mouse and Keyboard Hooks in C#

Once you handle CLICK event, you can use API functions to get Application / Control under the cursor (WindowFromPoint).

Here is one more article with code sample that will help you: .NET Object Spy and InvokeRemote (this is similar to spy++)

You cannot do this without using windows native methods.

HABJAN
  • 9,212
  • 3
  • 35
  • 59
1

User tagged this in winapi. He probably already knew about hooks. Part of HABJAN reply point to the right direction. Answer to the question is: Use Spy++ I don't think there's a message for "button clicked" or "url link clicked" but if you observe a program with spy++ you'll see there's UI notification messages like these ones: WM_CAPTURECHANGED, WM_CHANGEUISTATE or even WM_POSCHANGING. I think these are the messages you are looking for.

Another way to do this may be to use the AutomationElement, see this answer: Getting the current tab's URL from Google Chrome using C#

PS: If I could downvote an edit by another user to a question, I would downvote Dyppl's edit... question used very precise words: "get message" instead of "handle" in the title. PS2: It's an old question but I was asking me the same question earlier and came across it on google, maybe my answer will help someone

Community
  • 1
  • 1
fredericrous
  • 2,833
  • 1
  • 25
  • 26