前几天在这发的帖子,有位大侠说如果用DirectDraw写,在硬件加速时,就可以使截图软件不能截住画面.可是一般的机密文件是用GDI写的,所以想知道应该能用什么办法实现.
我调查了截图软件的功能,几乎所有的东西包括DirectX都能截,还能截成文本形式,然后又了解了VC写的代码.但是好象都不行,因为会影响到其他的功能,有没有什么好的办法的呢?请大侠们指教一下~谢谢!

解决方案 »

  1.   

    试试看SetClipboardViewer设置Viewer,判断当前GDI是否在可视范围,若是,不CallNextHook
    不过不适合Textout截获处理,如金山词霸,毕竟这是猫和老鼠的有戏,道高一尺,魔高一丈
      

  2.   

    这是屏幕捕捉VC程序的流程:
    1) 为屏幕创建设备描述表
    2) 为屏幕设备描述表创建兼容的内存设备描述表
    3) 获得选定区域坐标
    4) 获得屏幕分辨率
    5) 创建一个与屏幕设备描述表兼容的位图
    6) 把新位图选到内存设备描述表中
    7) 把屏幕设备描述表拷贝到内存设备描述表中 (BitBlt()函数)
    8) 得到屏幕位图的句柄
    9) 返回位图句柄
    10) 得到的屏幕位图句柄以后,我们可以把屏幕内容粘贴到剪贴板上,也可以把屏幕内容以位图格式存到磁盘文件上请问你说的是不是要我用API HOOK来监视剪贴板,看剪贴版中是否有窗口,这个判断就是用SetClipboardViewer这个方法?但是有的截图软件可能直接保存到磁盘上,这样不就不行了吗?