DESKTOP

电脑版为什么不卡:Windows 上的截图与多开

手机端受系统限制,很多功能做不了。电脑端是这类工具真正好用的地方——窗口可控、可以多开、识别稳定。这篇讲清楚电脑端的技术细节和你该验什么。

第一件事:有些窗口截出来是纯黑的

这是新手最容易卡住的一关。你写个截屏程序,截别的窗口都正常,偏偏截扑克客户端是一张黑图。

原因是 Windows 有一个 API 叫 SetWindowDisplayAffinity,应用可以把自己标记成「禁止被截屏」。标记之后:

  • 常规的 BitBlt / PrintWindow 拿到全黑
  • 系统截图工具(Win+Shift+S)也是黑的
  • 但显示器本身在显示,肉眼看得见

能绕吗

能,但要换思路。可行的方向是抓显示输出而不是抓窗口:从桌面 DC 直接拷贝当前屏幕像素,或者用桌面复制接口(Desktop Duplication)取整屏帧,再按窗口位置裁剪。

代价是:窗口被其他窗口遮住时,截到的是遮挡后的画面。所以要配合「窗口置顶」或者「按窗口矩形从整屏里裁」。

高分屏 DPI 缩放:模板失效的头号原因

同样一个客户端,在 1920×1080 的显示器上是 100% 缩放,在 2560×1440 的笔记本上系统默认给你 125% 或 150%。这时牌面像素尺寸会变成 1.25 倍或 1.5 倍,所有按 100% 截的模板全部匹配失败。

三种解法

解法做法优缺点
禁缩放给程序加 DPI 感知声明,强制按物理像素工作简单,但界面会变小,用户体验差
等比缩放模板运行时按窗口宽度算缩放系数,把模板缩放到实际尺寸再匹配通用,实现要对
现场标定让用户自己截一张牌桌图,现场生成模板最稳,但要交互

成熟的工具一般三种都用:默认等比缩放,匹配得分低于阈值时提示用户标定。

多开:一台电脑打四桌,识别怎么排

多开的核心问题是算力分配。四张桌子如果每张都按 30 帧/秒截屏识别,CPU 直接吃满。

实际做法

  • 事件驱动而不是轮询:只在窗口内容变化时才识别。用画面差异检测(前后帧哈希比对)触发,静止画面完全不耗 CPU。
  • 分级识别:底牌和公共牌用高精度模板逐张匹配;筹码和底池用 OCR,频率降到 2 帧/秒就够。
  • 错峰:四张桌子不可能同时发牌,识别任务排队处理,单线程也能跟上。

优化到位的话,四开占用大约在单核 15%~25%,普通轻薄本都能扛。

热键和浮层:好用不好用差在这里

电脑端相比手机端的最大优势是可以做浮层和热键。检查这几点:

  • 浮层能不能点击穿透:面板盖在牌桌上,你点牌桌按钮时不能点到面板上。这需要给窗口加 WS_EX_TRANSPARENT 扩展样式。
  • 浮层会不会被截进画面:用 SetWindowDisplayAffinity 把自己标记成不参与截屏,这样别人截图、录屏都看不到面板。
  • 热键是不是全局的:牌桌在前台时按 F8 能触发,切到别的窗口也能。全局热键要注册,不能只在窗口有焦点时响应。
  • 热键冲突:F8/F9/F10 经常和别的软件冲突,支持自定义才靠谱。

验货清单:电脑端跑一遍这五项

  1. 黑屏测试:把你用的客户端开起来,看工具能不能截到牌面。截不到就是技术不过关,别听解释。
  2. 缩放测试:把系统缩放从 100% 调到 125%,看识别还准不准。
  3. 多开测试:同时开两桌,看两桌数据是不是各自独立,会不会串。
  4. 穿透测试:面板盖住下注按钮,点一下,看是点到按钮还是点到面板。
  5. 资源测试:任务管理器里看占用,两开超过 30% CPU 的,四开就没戏了。

五项全过,这台机器上就算能用了。

常见问题

问得最多的几个,直接给答案。

为什么我的客户端截屏是黑屏?
客户端主动设置了禁止截屏标记。要改成抓显示输出(整屏复制后裁剪),常规窗口截图方式拿不到内容。
高分屏识别不准怎么办?
多半是 DPI 缩放导致模板尺寸不匹配。找带自动缩放或现场标定功能的版本,或者把客户端固定在 100% 缩放下运行。
能同时打几桌?
看优化。事件驱动 + 分级识别的实现,普通笔记本四开没问题;轮询式实现两开就会卡。
Windows 和 Mac 都有吗?
PC 端支持 Windows 居多。Mac 因为屏幕捕获权限和渲染差异,支持的产品很少,买之前务必确认自己系统能用。

相关功能页

同一个工具的不同角度,点进去看细节。

先拿免费试用,打一晚上再说

试用卡一机一次,装上就能看实时胜率、范围与建议。好用再谈价格。装之前可以先翻官方手册与更新日志、到下载页核对版本号与校验值。

领取试用 / 查看价格 →