How to detect when my application window is screen shared - c#

How can I detect on Windows OS level when any of my desktop application window is screen shared by any screen sharing tool. I am sure any screen sharing tool can not do screen sharing to remote user without support from Windows OS. I want to know what is that "something" which is set/done when any desktop app window is screen shared. I am writing a desktop app and want to behave differently when my app window is screen shared. I am looking for a generic solution and not specific to screen sharing tool. Any pointer to detect it manually or code snippet around this will be of great help. Thank you.

Related

How to start Windows Store app on specific monitor

In a dual monitor system, when starting a Windows 8.1 Store app from the Start Screen or the desktop Task Bar, an app will display its main page on the same monitor that it has been launched from.
I am looking for a way to start the app display on a specific monitor i.e. the primary monitor.
Unfortunately, as of Windows 8.1 there isn't an option to control this. If you have a specific scenario in mind, the best thing to do is describe the need via a request on wpdev.uservoice.com.
Generally speaking, Store apps get only limited information about monitors and system configurations, e.g. I don't know of an API that tells you what monitor you're on.
It's possible that there are third-party configuration tools that let you control this sort of thing, like the ones that let you run Store apps in a desktop window. I don't have any suggestions, however.

Allow RDP or VNC behind an active window, or to a non-input desktop

First a little background info on the problem:
My kiosk application must block user access to the computer by putting up a full screen image blocking all windows and the desktop. Users must not be able to get around this block. I can easily do this by putting a full-screen window up, OR by creating a new "virtual desktop" and switching to it. This is the easy part. Let's call this up front image/window/desktop THE BLOCKER.
What I need help with is allowing a remote desktop user or VNC user to operate the machine behind the BLOCKER, hidden from the user standing in front of the machine. I do not have a video switch involved (although if there is a cheap one that is remote controllable I might be interested...I need 12 of them). What I really want is a software solution.
VNC clients only show the current input desktop and do not have the option to ignore certain windows (the BLOCKER), so they don't seem useful for this. I do not know if RDP allows you to log in to a hidden desktop or if it can operate behind THE BLOCKER.
If anyone knows how this could be accomplished either via commercial software or knows of a software library that does something like this (we use .NET as our dev platform), I would appreciate the help.

How to use a monitor which is not part of desktop (Windows 7)

I would like to use a monitor which is actually marked "disconnected" in the windows control panel under "Change display settings". (I do NOT mean a physically disconnected monitor.)
I know how to add a second monitor in Windows and make it part of desktop. I also know how to make my application run on a primary or on secondary monitor when they are part of desktop.
I have a piece of equipment attached to the PC which has a touch screen on it. The touchscreen is connected to the PC over USB looking as an ordinary USB-Monitor and I can make it part of my Windows desktop. But that is not what I want.
What I would like to do is make sure that only one special application can run on this monitor. I also do not want to have a windows desktop on it because than the user could move any window to it which is not what I want. The idea behind all this is to use the touch screen to have an application on it which can control this external piece of equipment. The user would only have to run the PC but not to login. I was thinking about starting the app from a windows service before the windows desktop is loaded. And once the user logs in I do not want him to be able to use the touch screen for anything else except this special application. That is why the touch screen must not be part of the windows desktop but ”deactivated”.
I am using . NET 4.0 and C# for my application, but I will use C++ or whatever comes handy.
Any help or idea is appreciated. Thank you!
It seems WDDM does not support independent displays any more. Here are a few links in case somebody wishes to take a look for himself:
(old MSDN link) = /windows/win32/gdi/multiple-display-monitors
(old MSDN link) = /windows/win32/gdi/using-multiple-monitors-as-independent-displays
The important part is this note from the second link:
ⓘ Note
Using other monitors as independent displays isn't supported on drivers that are implemented to the Windows Display Driver Model (WDDM).

windows system tray application like the volume application

I would like to create a application very similar to the windows 7 volume bar which is located in the system tray. I'm new to windows development and would like a point in the right direction.
Should i just make a normal application and just put in the system tray?
I don't need a main window for the application, it has to accessible only via system-tray (i need only the volume bar, nothing else)... how can i do this?
Would it be better to write it in C++ instead of C#?
How can i detect the "volume" of the sound that is outputted by windows (even if the system sound is muted)?
Thanks for your reply's.
You can by using the class NotifyIcon. Just google for it to find samples. Here is one.

How does VNC continuously repaint windows?

How does VNC send REPAINT messages to windows even when a user is not active?
I would like to implement this in C sharp - I've had a look at the PrintWindow, SendMessage methods and none of them achieve the same thing as VNC (tested by capturing images and its black) but with VNC I get the full picture.
What techniques are they using to do this and can this be implemented in C sharp to get windows to always repaint even when a user is not active (i.e. RDP is closed, minimised or similar).
Thanks all
You could use the technique used by video games, which consists in redrawing permanently a window during CPU idle time.
I found a C# implementation here.
You just have to adapt it to your needs.
VNC does NOT send WM_PAINT messages
Windows does (and it does not care whether a user is active). See also
Is it possible to screenshot a minimized application
How to get the screenshot of a minimized application programmatically?
Capturing screenshots of a minimized remote desktop

Categories

Resources