This question already has an answer here:
-
Detect when users take screenshots of my program
10 answers
There are various ways to take screenshots of a running application in Windows. However, I hear that an application can be tailored such that it can notice when a screenshot is being taken of it, through some windows event handlers perhaps? Is there any way of taking a screenshot such that it is impossible for the application to notice? (Maybe even running the application inside a VM, and taking a screenshot from the host?) I'd prefer solutions in Python, but anything will do.
> I hear that an application can be tailored such that it can notice when a screenshot is being taken of it
Complete nonsense.
Don't repeat what kids say...
Read MSDN about screenshots.
There will certainly be no protection against a screenshot taken with a digital camera.
Do you have a particular anti-screenshot program in mind? Ultimately, you're right, running the app in a VM will trump any 'protection' it has, but the method depends on which OS/VM you're using, and it's not worth the overhead until it's needed.
I'd just use this: Take a screenshot via a python script. [Linux] (Windows only)
One could use Remote Desktop or the (low-level) VNC Mirror Driver and take the screenshot on an another computer.