Trying to detect and gather data on click outside application - c#

I would like to know if it is possible to, while running a WPF window application in Visual Studio, wait for the user to click anywhere on the screen (not necessarily inside the window of my application - for the purpose of my application, the click would most likely occur inside a browser page) and then gather the information about the click (like inside the window of which application the user clicked, or the selector of the html element the user clicked)? I know this question might be very confunsing but this is basically my last resort since researching on the Internet hasn't helped me much. Just to provide a better idea of what I seek, it's like what the 'Extract Structured Data' Activity does in UiPath. Oh and I'm using C# by the way.

You can try and use this external library called GlobalMouseHook.
This library allows you to tap keyboard and mouse, detect and record their activity even when an application is inactive and runs in background.
Here is what you can do with this library:
Mouse coordinates
Mouse buttons clicked
Mouse drag actions
Mouse wheel scrolls
Key presses and releases
Special key states
Hope this helps.

Related

change mouse button function

i've new mouse gaming that have several additional button. this mouse doesn't include application to allow user modifying function for the button. i like to change just like sharpkeys do. If there's any application that can allow me, can you tell me what is it? Or if there's no application yet, i im interested to starting developing.
for development choice, i've 2 option, develop with electron(javascript) or c#(the same programming language used by sharpkeys). can you recommend me which one is better?
update:
from this following link
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button
we can detect that every button has their own key code, my mouse button additional key code is 3 and 4. how can i modify these key become a same function like home/end in my computer keyboard?
You didn't state clearly about what you want to achieve.
Press a mouse button and act like "go to top of the page" ( what home key does ).
Press a mouse button and act like press home, and press home is defined by yourself.
I'll try to answer both.
According to your link, I found this
For solution 1.
You need mouse button act as "go to the top of page", you shall dig about how to "go to
the top of page".
For solution 2.
Keyboard event will tell you which key is pressed.
You may route mouse event and keyboard event to the same function.
i'm also found other application for alternatives for the solution to my problem, It's Mouse Manager. However, i'm still interested to develop application that can customize the mouse gaming button, for future development.

C#/.NET - View a list of system events ie. Windows that have been displayed, buttons that have been clicked etc

I'm completely new to C# and the .NET framework so forgive me if this is a silly question.
Is there any way of viewing a list of all of the events that have happened on a Windows system as a result of keystrokes and mouse movements etc.? So for example when I click on the Start menu, the Start menu is displayed or when I click the "Apply" button within a settings sub-menu, the settings are applied.
Is there any part of the .NET framework that will allow me to view all of these events/actions and record them via a C# program? Any help would me greatly appreciated! Thanks in advance.
UI Automation API is what you need. For listening automation events there are few kinds of handlers: AutomationEventHandler, StructureChangedEventHandler and 2 others.
There is another way for native windows: global mouse and keyboard hooks. See SetWindowsHookEx function.
C# in visual studio designer gives you the ability to respond to all kinds of events, like mouse moves and clicks. If you click on the object you want events from, then go to the events pane, you will see a list of all the events for that object. double click in the textbox next to it and it will auto-generate an event handler in your code. When the event is triggered, it will go to this method and do any code you provide there; IE log the action however you choose.

How to handle an external HID button click in C#

I'm trying to integrate a third party hardware to one of my existing projects . Basically the hardware has two buttons with different color leds on each button.
I am able to open and close each led with the library/manual which is provided by the manufacturer without any problem. My problem is I can not handle its buttons click events from any kind of software C/C#/VB etc...
I mean when I press one of its buttons it acts like any input device and effects the cursors current position like a keyboard key or mouse click due the opened program(For example if Ms Word is opened currently it acts like space key?). The DLL or manual has no special function for this purpose (like a mouse click event?).
So what I'm asking is there any general way to handle any external device button click inside a C# program? How the currently running software suppose to understand a button is clicked and enter the desired method in the code?
Any clue or tip would be highly appreciated.
Thanks...

Mouse down in Silverlight

I'm working on a project in Silverlight. This is the problem:
When mouse enters in my control, I want to check whether the mouse button is down already or not. There is no way to see when it's been pressed because it might have pressed outside of the browser.
This is a default behavior, thats why mousebuttonup event is used for final actions of your process such as clicking on button does not process its assignment if you release your button outside of the button.
However, you can find a workaround using drag drop features of Silverlight according to your scenario.

Check to see if mouse is pressed anywhere on screen from silverlight control?

I have a silverlight control which acts as a drop down. I'd like to get a mouse pressed event when the mouse ISNT hovering over the dropdown control or any one of its children.
how can I go about doing that?
Well that depends on what you mean by "Screen".
With in Silverlight you are only going to be able to detect mouse down when the mouse is over the part of the screen that the Silverlight pluging is actually using.
The first step would be use this code:-
Application.Current.RootVisual.AddHandler(UIElement.MouseLeftButtonDown, myMouseButtonHandlerMethod, true)
This may well be enough for you, however, if you still need to detect mouse down when Popup or ChildWindow controls are in use you will need to attach this handler to those as well (since the sit above the RootVisual).
You may be able to take things further if you want to reach out into Javascript in the host html page. If your SL component only occupies a portion of the HTML Page presented you could get further events from via the HTMLBridge to detect mouse down anywhere in the browser client area.
If you really mean the whole screen then that isn't possible currently.

Categories