How to draw attention to the current mouse location? - c#

We have an app that hides the desktop icons when the keyboard/mouse are idle for longer than 15 seconds. When the user starts using either of these devices again, we would like to draw their attention to the location of their mouse, much akin to how the CTRL key can be enabled to circle the mouse in Windows.
Are there any similar functions or suggestions I could use to perform such a task? I find working with the mouse in a global fashion (Anywhere on the desktop, not just on our app) very difficult.
Thanks very much for the suggestions!

1) use a timer with 15 seconds interval;
2) save the current mouse location on screen:
Getting mouse position in c#
3) when timer reached 15 seconds, check mouse location again. if it is changed, update current mouse location. if it is unchanged, draw something on screen at the mouse location (and you need clean it too):
How do I draw graphics in C# without a form
It is not the best choice, but if the mouse is moved during the 15 seconds, it is unlikely it will back to its original location in 15 seconds.

Related

Hide mouse pointer for specific screen / control on Xbox

I have a UWP app running on Xbox One. The app uses mouse pointer for navigation. It works well. One screen contains a video player that can be set to run fullscreen. When in fullscreen video playback, the mouse pointer does not disappear.
How can I make the mouse pointer programmatically disappear when the player enters fullscreen and appear when it exits full screen?
I found How Can I Disable Pointer Mode For Xbox One (C#, UWP) but it only handles global pointer set when the app starts.
Found a working solution, to hide the cursor, do Window.Current.CoreWindow.PointerCursor = null. First store the value somewhere of course so you can restore it when you need the cursor back.
Have you tried wrapping the media player in a custom user control on which you could say RequiresPointer = RequiresPointer.Never; whenever the player enters fullscreen?
I don't have an Xbox here at the moment to test it and it's been a while since I've wrote something for it. But this approach would be my first guess.

How do I make a faster c#.NET timer alternative?

I currently am using a timer for a script I wrote in Visual Studio 2015. I set the interval of the timer to 1 ms but it's not fast enough. The function of the timer is to keep the mouse in the center of the screen without allowing it to move away. Fast movements of the mouse will shortly pull the mouse away from the center, after which the timer will immediately recenter it. However, this isn't acceptable for my situation and I need it to be so fast that the cursor cannot move away from the center. Perhaps there is something better than a timer?
I am making this to avoid an issue regarding dual monitors which I decided to take upon myself to fix. (So this is a personal program)
If you are trying to restrict the movements of the cursor to some area you can use Clip property of the System.Windows.Forms.Cursor object.
This function allows you to define a clipping rectangle that restricts the movements of the cursor to those bounds.
You can find some information about this property in this article of MSDN
Hope you not trying to create a virus.
But have you tried using OnMouseMove event instead of a timer.

Get Screen with the mouse cursor on it

I'm making a little screenshot application. Anything is working so far.
Now I want to add multiScreen support. I want a key that makes a screenshot of the active monitor (with the mouse cursor on it).
I thought about calculating the Rectangle of all screens, get the cursor possition and calculate on which monitor the coordinates are. But I have don't get it work!
Can anyone provide me a code snippet? Thank you

Effectiveness of PointerMoved event in Windows.UI.Xaml.Controls.Canvas in Windows Store App

I am writting a Windows Store App where you can draw lines on the screen and need to avoid the obstacles. To detect where exactly is user touching at the moment I use Canvas from Windows.UI.Xaml.Controls, because it contains events that are helpful here. But the problem is that PointerMoved event is very slow, and it's easy for user to draw on the obstacle and app does not detect it (if user draws over the obstacle fast enough)
Is there any way to speed it up, for example try to force this event to be raised after every (even small) pointer position change?
Thanks for any help!

moving mouse cursor off screen in C#

I have a wpf window that has a height of 2000 with an actual desktop height of about 1000. Obviously about half of the window is off screen. Even though the window extends below the screen, the mouse will not move down to that area. I do want this content to be off-screen, and I want the mouse to be able to move over it and click on elements if the mouse is positioned over an element at that position. I don't want to change my screen resolution as some content absolutely has to be off the screen. Not sure how to go about this.
Cursor delimiting is not done by the application, but by Windows itself. To my knowledge there is no way to have your cursor pointing off the screen.
You could simulate what you want by doing what many games do. Do not draw the Windows cursor, draw a custom one in your app window. Force the real cursor (not being drawn) to stay in the center of the monitor. Every time the user moves the real cursor, move your application's cursor accordingly and re-place the real cursor to the center of the screen.
This will give the illusion of what you'd like, but I don't think WPF can handle this.
There is not an off the screen cursor position in Windows. I think the mouse is bounded by the screen resolution, even if windows are not.
If you take a look at the screen shots of MaxiVista you'll find a screen shot showing the Device Manager:
Device Manager http://www.maxivista.com/pics/screenshots/vista_devicemanager_en.gif
As you can see they simply wrote a virtual display adapter, which provides its own display size. So windows will be informed about a available size of e.g. 2560x1600 would be possible and allows these bounds for all windows and the mouse. Now it is up to the display driver to forward the right portions of this virtual screen to the current real display adapters so that the right part is shown on each physical device.
I think it is possible. This program will enable to use a secondary computer as an extra monitor. There are several programs that can let you know the coordinates where your mouse cursor is positioned. For example AutoIt will do that easily.
When you install autoit it comes with this utility that will let you know the cordinates where you position the mouse. When I took the screen capture the mouse does not show up but I draw a blue dot where the mouse was located. Note that the cordinates where 710, 1464. Right now my screen resolution is 1200 * 1920 (my monitor is rotated). So with Autoit I am able to position my mouse cursor by doing something like
When I run that autoit program it will move the mouse to that location. The answers to this question seem to be right cause I am not able to move the mouse any further than 1200 to the right. In other words executing MouseMove(2500,800) will result in moving the mouse to 1200,800. Now the interesting part is how come I am able to move the mouse to (2500,800)! if I use This program In other words executing MouseMove(2500,800) now works with Autoit and the mouse actually moves to the other computer (maxivista has to be running). maxivista shows that there can be a way of moving the mouse outside the resolution of your screen.

Categories

Resources