tags:

views:

156

answers:

5

I´m looking to implement a way to avoid the user taking a screenshot from one desktop application. Yes, this seems to be weird asking for that, but we need it. I tried to use OpenGL (SDL_tff) to render the text, but it seems that doesn't stop the user from taking the screenshot. Please, does anybody have some clever idea about how to do it?

+1  A: 

You cannot accomplish what you want. What you want is, in fact, nonsensical.

chaos
+1  A: 

Even if you find some clever way to stop them doing it with their computer, using a good quality digital camera to take a picture of their monitor provides a remarkably good quality screenshot.

Colin Coghill
There is no problem if the user take a screenshot using a digital camera, the problem is allowing him to take using plain screenshot functions.
mileschet
+2  A: 

As I mentioned in my comment, you can't stop the user from taking a screenshot.

There might be a few things you can do to make it a bit more difficult though, and maybe deter less knowledgeable or driven individuals from taking a screenshot.

A suggestion: you might want to watch for key combinations that are often used for taking screenshots, then briefly hide your text. It may get the behavior that it seems you are looking for: allowing the user to take a screenshot without showing the text.

Another alternative is to provide a very easy and obvious way to let the application take the screenshot FOR the user, without saving the text. This might be useful in the case that you aren't trying to make the text "impossible" to capture, but rather that the user would prefer the screenshots to be text-free.

It's not clear from your question what the motivation behind your request is. If you just would like to have "prettier" screenshots without text, this shouldn't be a hard problem to solve: just do as I mentioned before and provide a built-in mechanism for saving "clean" screenshots.

Just remember that if the user DOES want to save that text, you cannot stop them from doing it.

TM
+3  A: 

Render it to video and use a hardware overlay. those are much more difficult to capture since they are technically never rendered to the screen like other apps. It goes directly to the hardware and displays through the graphics card, bypassing normal screen shot domain.

It is still grab-able though.

personally, i'd take a high res photo and run it through a img2txt converter :D

Edit: check out http://www.gamedev.net/community/forums/topic.asp?topic_id=359319 , they seem to have an example, and it specifically states how a "screenshot" of the effect is kinda silly.

Ape-inago
This is what i´m looking for, an example of how to render in hardware overlay.. thanks
mileschet
I suppose that it will not work on vista and latter OSes.
n0rd
it should work on vista... its entirely a graphics card thing. see http://en.wikipedia.org/wiki/Hardware_overlay#Screenshots
Ape-inago
Vista doesn't use overlays, instead in streams video to texture.
n0rd
A: 

Don't forget to add VM detection routines so you can disable display if you discover you're running under a virtual machine. That way they can't take a screenshot of the VM window.

Unless they modify an open VM to remove that sort of easy tell-tale, in which case you'll have to use something stronger.

genpfault