在Delphi中防止屏幕抓取

在Delphi中防止屏幕抓取,delphi,screen,Delphi,Screen,可能重复: 到目前为止,我已经能够停止Prt Sc键按下,并能够清除剪贴板,使我的应用程序无法屏幕抓取 然而,作为一项测试,我尝试使用Corel PaintShop pro,它有一个选项是导入屏幕捕获,这与使用剪贴板抓取屏幕非常不同,我怀疑我的应用程序没有停止这一操作 因此,我在该网站上找到了以下代码: 这使用了一种不同的方式来抓取屏幕上的内容,我认为Corels方法与此类似。我的应用程序中是否使用了这种屏幕抓取方法 格雷格·休吉尔-为此干杯-我会读这篇文章 在Windows上获取屏幕截图很

可能重复:

到目前为止,我已经能够停止Prt Sc键按下,并能够清除剪贴板,使我的应用程序无法屏幕抓取

然而,作为一项测试,我尝试使用Corel PaintShop pro,它有一个选项是导入屏幕捕获,这与使用剪贴板抓取屏幕非常不同,我怀疑我的应用程序没有停止这一操作

因此,我在该网站上找到了以下代码:

这使用了一种不同的方式来抓取屏幕上的内容,我认为Corels方法与此类似。我的应用程序中是否使用了这种屏幕抓取方法


格雷格·休吉尔-为此干杯-我会读这篇文章


在Windows上获取屏幕截图很简单,例如GetWindowDC(NULL)。我能想到的唯一方法与这个答案类似:stackoverflow.com/questions/455623/…——Nick

尼克看起来和格雷格提到的帖子一样,不过还是为你的回复干杯


为什么要这么麻烦?如今,人们只需用手机拍照并发送出去即可马扬·维尼玛


这可能是真的,Marjan,但我正试图阻止间谍软件程序单击日志记录,如果这能让事情变得更清楚的话。

我能想到的唯一方法是使用DirectX。当某些应用程序(如DVD播放器)使用DirectX写入屏幕时,Windows会在显示视频的地方看到一个黑色(不是很黑,而是很近)的矩形。尝试使用PrintScr或GetWindowDC()返回该黑色矩形。像Snag It这样的高端屏幕捕获应用程序可以使用DirectX正确渲染图像,但这将是一个99%的解决方案,正如其他人所说,用户无论如何都可以拍照。

我能想到的唯一方法是使用DirectX。当某些应用程序(如DVD播放器)使用DirectX写入屏幕时,Windows会在显示视频的地方看到一个黑色(不是很黑,而是很近)的矩形。尝试使用PrintScr或GetWindowDC()返回该黑色矩形。像Snag这样的高端屏幕捕获应用程序可以使用DirectX正确渲染图像,但这将是一个99%的解决方案,正如其他人所说,用户无论如何都可以拍照。

在Windows上获取屏幕截图很简单,例如
GetWindowDC(NULL)
。我能想到的唯一办法与这个答案类似:为什么要惹这个麻烦?如今,人们只需用手机拍照并发送出去就可以了?在Windows上获取屏幕截图很简单,例如
GetWindowDC(NULL)
。我能想到的唯一办法与这个答案类似:为什么要惹这个麻烦?现在人们只需用手机拍照并发送出去?…或者将VGA/DVI输出连接到录音设备。@Andreas-Ha!通过使用HDCP标记内容,很容易被阻止。不,等等,可能不容易!但是既然我们已经进入了过度杀戮的领域,为什么不呢?好吧,我真的迷失在这一切中了,正如我提到的,我已经能够防止PrintScreen抓取我的应用程序的屏幕。是否无法侦听GetWindowDC调用并截获此消息?或者是否可以隐藏应用程序的窗口句柄?我可能需要一些代码示例来说明我需要做什么,因为我觉得这超出了我的Delphi技能:)访问DirectDraw surface并不是那么简单,但实际上也不是那么难……或者将VGA/DVI输出连接到录音设备。@Andreas-Ha!通过使用HDCP标记内容,很容易被阻止。不,等等,可能不容易!但是既然我们已经进入了过度杀戮的领域,为什么不呢?好吧,我真的迷失在这一切中了,正如我提到的,我已经能够防止PrintScreen抓取我的应用程序的屏幕。是否无法侦听GetWindowDC调用并截获此消息?或者是否可以隐藏应用程序的窗口句柄?我可能需要一些代码示例来说明我需要做什么,因为我觉得这超出了我的Delphi技能:)访问DirectDraw surface并不是那么简单,但实际上也不是那么难