can i detect desktop changing to do screen capture - c#

I'm in the process of creating a desktop screen capture application. I'm using a Timer to poll for screen changes. Can I detect if the desktop has changed through a Windows API?

As far as I know there is no easy API for this. The only way to do it more efficiently would be to use a mirror driver which would capture all screen events (e.g., the way remote desktop does it).
You could try the UltraVNC mv2 mirror driver: http://www.uvnc.com/products/mirror-driver.html

Related

GetWindowRect for a UWP process from Desktop

I need to get access to the co-ordinates of a UWP app process from my desktop C# app (or console, if that works). Is this possible? More specifically, I need to get the current co-ordinates of Microsoft Edge on the screen.
GetWindowRect always returns 0 in this case.
It's by design. The UWP apps run in sandbox. It's not allowed to communicate between the app's process. So, this API will not work for UWP apps.

developing UWP Remote dekstop viewer

I wants to develop a UWP remote desktop viewer application. I had already gone through many tutorials but those are all of winform application and I can't port them into uwp. So that desktop can be viewed from windows 10 mobile. I have zero knowledge regarding this so anyone can help me from where should I start and also if someone having UWP remote desktop code so that I can understand its working easily.
I am afraid you cannot develop such application easily in the Universal Windows Platform. Microsoft has its own Remote Desktop app, but it is definitely using some APIs which are not publicly available for the connection to remote computer.
To develop such app you would need to capture / record the screen on desktop as well as capture all input and relay the input from the remote device to the source.
You could create the desktop side of the app using Windows Forms / WPF and connect to it remotely from a phone, which would just act as a display and would capture and send the user input to the desktop counterpart.
There is also a small chance you could implement the desktop app in UWP with the help of Brokered Windows Runtime components, but that would be very tedious work.
Once again however, developing this is a major task, which is more suitable for a team of developers.

Checking if the current user is active?

Windows Live Messenger, Skype, the indexing service in Windows and the screensaver functionality in Windows all have a way of detecting when the user moves his/her mouse, or uses his/her keyboard to detect when they are active, and when they are not.
Is there a Windows API used for detecting if the user is present at his PC? What about proximity sensor APIs in Windows 8? Or is it required for me to actually detect if the user moves his mouse or uses the keyboard through existing Windows APIs?
I found a solution using this API.
http://www.pinvoke.net/default.aspx/user32.GetLastInputInfo
It delivered exactly what I needed.
I guess you would have to dig in to WIN32 API and Windows Messaging Queue.
In particular look at the WM_MOUSEMOVE message. Check; http://msdn.microsoft.com/en-us/library/ms645616(VS.85).aspx
Use your application to review that message and build a timeout mechanism.
Also check out this link for a C++ variant: http://www.cplusplus.com/forum/beginner/11226/

Windows Form application run on Windows hosting service

I've created a Windows Forms application that basically contains an HttpListener which launch a Form for each request. I have to show forms server side because I have to take a snapshot of what it's shown on the screen to send it to the client.
I've also made a asp.net web application in which I show those images sent from the HttpListener who act as a server.
Everything works fine on my machine but now that I must deploy it on my company's website I dont know how to do it, anyone has a solution? I haven't remote control on server, I can just upload files inside using FTP.
What if I create a page inside my web application to launch the exe file? Any suggestion is really welcome!
I'm definitely no OpenGL expert but I believe that its possible to use OpenGL to render a scene without displaying it to a screen. Some preliminary research indicates that "pbuffers" allow you to render an image to a texture (which would presumably then allow for programatic access).
Can i save an OpenGL scene as an image without showing it?
Note that using OpenGL probably depends on the server machine having a suitable graphics card. As most servers don't come with very capable graphics card (some servers don't come with any graphics card) this is definitely something that you should check beforehand.

Implications of Minimizing to System Tray

I have an UI application that serves several functions (<800KB). I wanted to allow minimizing it to the system tray, and continue to decode data coming from the serial port and sending network messages.
Can I simply hide the main form and create a NotifyIcon in the system tray, or are there other considerations for system tray applications? Does the application use less resources while hidden? Or is it best to make a light version of the application for the system tray (with duplication of code)?
My application does what 2 different applications do (related functions). I'm trying to foresee the implications before I finish coding it.
I've written a couple apps that use NotifyIcon. Putting it in the notification area (system tray) isn't anything special. It's just not visible on the toolbar anymore.
IMO best way in your case is to make windows service that will decode data from serial port and send messages. And other winforms app that will only set preferences and watch service state, that one can go to tray. Maybe you don't really need this tray app, just windows service, you can set preferences trough config file and watch state trough EventLog.
Of course if is possible to run from windows service, eg. your serial port and network code doesn't need logged user or desktop.

Categories

Resources