如果按下打印屏幕按钮然后打开绘图并按Ctrl V你的图像在那里有一种方法可以使你的程序不在那里或者可能被替换为一个黑框或其他东西
我没有太多的windows编程经验,这对我来说只是一种好奇心,而不是我实际计划实现的东西。
你不能从你的winform应用程序中禁用打印屏幕,因为这是一个操作系统的功能。即使有人聪明到可以使用数码相机....
也看一下下面的:
http://social.msdn.microsoft.com/forums/en us/csharpgeneral/thread/f8fccf61 - 5132 - 4037 - 809 - d - f22f706e9e7b
简短的回答是没有万无一失的方法。这里有一个像样的讨论:防止屏幕截图
有没有想过为什么一些视频在Windows Media player捕获黑色/移动屏幕时,你试图截图他们?这叫做硬件/视频叠加。
参见:en.wikipedia.org/wiki/Hardware_overlay
摘自维基百科的文章:
由于硬件覆盖的使用,屏幕截图程序(为例如,Windows中自动内置的,当(用户按下PrtSc键)通常不能捕获内容出现在硬件覆盖窗口。而是一个空白区域只包含特殊的掩模颜色被捕获。这是因为屏幕捕获例程不考虑特殊的显存区域专用于覆盖-它只是捕获共享主由软件的图形子系统呈现的屏幕。一些数字权限管理方案使用硬件覆盖来显示受保护的内容内容在屏幕上,利用这个怪癖来防止通过屏幕截图复制受保护的文件[来源]需要)。禁用对覆盖的支持将导致正常的覆盖—使用软件回退到共享内存,从而启用截图。
虽然我不知道如何实现这一点,但这肯定是可能的。也许这将为你的研究提供一个很好的起点。
这是可能的。
必须拦截打印屏幕按键/热键行为(我相信这是一个Windows热键),然后覆盖所需的行为。由于数据存储在内存中,并且可以通过剪贴板访问,因此可以清除数据或首先不允许存储数据。
如果这是Windows,则必须使用Windows API来完成此操作。
我相信有几个商业程序具有这种类型的功能来保护任何文档或任何从计算机复制的数据。
MSDN在这里描述了打印屏幕热键:
http://msdn.microsoft.com/en-us/library/ms646279 (v = vs.85) . aspx
肯定有一种方法可以做到这一点——这只是一个问题,你需要在多低的堆栈中完成它,以及它将花费多少工作。
如果rootkits可以隐藏用户空间进程的所有踪迹,那么它们当然可以被写入拦截printscreen并在捕获发生时隐藏一个窗口。