Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hiding monitor from windows, working with it from my app only

I need to use a monitor as a "private" device for my special application, I want to use it as a flashlight of a sort and draw special patterns on it in full screen. I don't want this monitor to be recognized by OS (Windows 7) as a usual monitor. I.e. user should not be able to move mouse to that monitor, or change its resolution, or run screensaver on it or whatever. But I want to be able to interact with it from my application. Monitor is plugged using an HDMI cable to a video card (most probably nVidia).

What is the simplest way to do this? All solutions are appreciated, including purchasing additional adapters or simple video cards, or any other special devices. The only solution I could imagine for now is to plug the monitor to another computer, run a daemon on that computer, connect it to my computer via ethernet or whatever, communicate with that daemon from my computer. It is pretty ugly and require additional computer. But I need to solve this problem.

like image 609
Mikhail Avatar asked Oct 16 '12 17:10

Mikhail


People also ask

How do I make my monitor private?

On Windows PCs, the shortcut is "Windows Key" + D. On a Mac running OS X, just press the F11 key.

How do you hide what you are doing on computer?

CTRL + ALT + DEL Pressing the three keys will bring up a dialog with a few options like Lock this computer, Switch user, Log off etc. Pressing Enter will automatically select Lock this computer. This is the best method to hide everything on your desktop.

Can you hide taskbar on one monitor and not the other?

Right click on the Taskbar and Go to settings. Click on the taskbar option. Under Multiple displays you can turn off the option for Show taskbar on all displays.


3 Answers

To do this, detach the monitor from the desktop. Detaching a monitor from the desktop prevents Windows from using it for normal UI.

Sample code for attaching and detaching monitors is in this KB article. Once you've done that, you can use the monitor as an independent display.

like image 184
Raymond Chen Avatar answered Oct 13 '22 09:10

Raymond Chen


Building upon your own idea of using an external PC, and Mark's comment on using a VM as this "external" device:

You could buy an external USB-to-VGA video adapter like one of these, approx. USD40:

USB-to-VGA adapter

http://www.newegg.com/USB-Display-Adapters/SubCategory/ID-3046

Almost every VM software supports some kind of USB passthrough. VirtualBox is a great example. Only the VM sees the USB device, the host ignores it completely. So the steps would be:

  1. Buy said USB-to-VGA adapter.
  2. Configure slim a virtual machine and cook up a little utility to receive the images to show on he screen by network.
  3. Configure VirtualBox to connect the USB-to-VGA adapter directly to the virtual machine.
like image 42
NothingsImpossible Avatar answered Oct 13 '22 08:10

NothingsImpossible


Here is another simple solution to monitor you application.

Your app should provide an API monitor service, served as HTTP on any port you want (for example http://{userip}:{port}/{appname}/monitor).

Your app monitors itself, keeping monitoring data in memory, in a local file or a database, hidden from the user. The monitor API serves this data to any device you want that has a browser (tablet, phone, netbook, android mini-PC, low cost linux device, any PC or any OS... from the internet, your LAN or direct connection to the PC hosting the app).

Pros:

  • Data to monitor is collected (and served) within your app : only one executable
  • Display can be done remotely : from anywhere !
  • Access security easily done using standard HTTP authentication mecanisms
  • You can monitor several applications (ie several monitoring URLs)
  • You are free to use any browser to monitor (even a local window browser on the same PC for testing purposes)
  • Monitor from any hardware and OS you want
  • Simple and flexible !

Cons:

  • There is few, but tell me...

Choosing this solution depends on what kind of data you need to monitor (text, images, video...), and also on what is the refresh rate you expect depending on your system network configuration.

Hope it helps :)

like image 1
Stephane Lallemagne Avatar answered Oct 13 '22 07:10

Stephane Lallemagne