V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yyb123456789
V2EX  ›  Python

为什么我用程序截取 QQ 聊天界面是黑框呢?当聊天界面不在被其他界面挡住时,我是针对窗口句柄进行截图的,有知道的吗?

  •  
  •   yyb123456789 · 2020-04-23 10:06:39 +08:00 · 3389 次点击
    这是一个创建于 1708 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    2020-04-23 19:51:54 +08:00
    delectate
        1
    delectate  
       2020-04-23 10:23:57 +08:00
    因为 qq 不是标准的 winform 。也不是微信那种 directUI 画出来的。
    所以即使拿到了句柄,只要不是前台展示,就不能截图。感觉像是后台隐藏的时候,只进行局部刷新一样。
    yyb123456789
        2
    yyb123456789  
    OP
       2020-04-23 10:30:12 +08:00
    那有什么办法可以解决吗?给个思路也成
    ysc3839
        3
    ysc3839  
       2020-04-23 10:59:55 +08:00 via Android
    @delectate QQ 的界面是 Direct UI 。
    具体是什么问题还是看看截图的代码吧。同时试试 OBS Studio 的窗口捕获看看能不能截到。
    yyb123456789
        4
    yyb123456789  
    OP
       2020-04-23 11:11:37 +08:00
    @ysc3839 应该不是代码的问题,同样的代码只是把句柄换成 QQ 的就不行,其他界面的句柄,试了几个是可以的
    对桌面截图可以截到 QQ 的,但是我想针对句柄截图,即使界面不在最前也可以截到图
    ysc3839
        5
    ysc3839  
       2020-04-23 12:16:44 +08:00 via Android
    @yyb123456789 猜测 QQ 可能使用了 Direct2D 之类的进行绘图,试试 OBS Studio 的“游戏捕获”。
    yyb123456789
        6
    yyb123456789  
    OP
       2020-04-23 13:48:58 +08:00
    @ysc3839 好的,谢谢了,我这就试下
    ysc3839
        7
    ysc3839  
       2020-04-23 13:56:51 +08:00 via Android
    @yyb123456789 目前我只知道 UWP App 用 OBS Studio 的窗口捕获和游戏捕获都不能截取,传统 Win32 应用似乎都没问题 (我没试过 QQ 如何)。如果 QQ 真的不能捕获的话我也没什么好办法了,只能说确实存在这种情况。
    yyb123456789
        8
    yyb123456789  
    OP
       2020-04-23 15:03:20 +08:00
    @ysc3839 刚试了,不行。QQ 也是 UWP App 的一种吧,捕获不到界面,是个黑框框。和代码结果一样
    ysc3839
        9
    ysc3839  
       2020-04-23 18:16:17 +08:00 via Android
    @yyb123456789 QQ 有几个版本的,难道你用的是那个功能很少的 UWP 版?
    yyb123456789
        10
    yyb123456789  
    OP
       2020-04-23 18:37:14 +08:00
    @ysc3839 应该是较新的版本了吧官网下的,QQ9.2.3(26683) 窗口捕获可以捕获浏览器、pycharm 等的,但是 QQ 是黑框
    mywaiting
        11
    mywaiting  
       2020-04-23 19:09:44 +08:00   ❤️ 1
    恶意猜测:灭了 QQProtect 再试试~
    cz5424
        12
    cz5424  
       2020-04-23 19:16:55 +08:00 via iPhone
    权限问题?
    CheekiBreeki
        13
    CheekiBreeki  
       2020-04-23 19:23:19 +08:00 via Android
    這個和遊戲反作弊有點像
    crab
        14
    crab  
       2020-04-23 19:31:18 +08:00
    QQ 有保护,别针对窗口句柄截图,GetDC 整个屏幕,再按区域提取。
    ysc3839
        15
    ysc3839  
       2020-04-23 19:37:14 +08:00 via Android
    @yyb123456789 不是微软商店下的就不是 UWP 版。
    ysc3839
        16
    ysc3839  
       2020-04-23 19:38:00 +08:00 via Android
    @crab 这保护也太奇怪了,为啥截取整个屏幕又可以呢?
    yyb123456789
        17
    yyb123456789  
    OP
       2020-04-23 19:47:01 +08:00
    @crab 桌面截图是可以的,但是我想即使不在最前端我也可以截图
    yyb123456789
        18
    yyb123456789  
    OP
       2020-04-23 19:49:06 +08:00
    @mywaiting 笑屎了,protect 杀了之后,QQ 也跟着退出了
    yyb123456789
        19
    yyb123456789  
    OP
       2020-04-23 19:50:01 +08:00
    @cz5424 不是权限问题的
    yyb123456789
        20
    yyb123456789  
    OP
       2020-04-23 19:51:54 +08:00
    @ysc3839 不清楚什么是 UWP 版本,就是在桌面时截取桌面才能截到,其他方法都截不到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:58 · PVG 21:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.