我目前正在编写一个小脚本,该脚本可以从 BlueStacks 中的硬件加速窗口捕获屏幕截图。
问题是,看起来窗口必须是硬件加速的,因此屏幕捕获保存了一个黑色方块。
我使用 AutoHotkey 编写脚本,并添加了 GDIp 库来访问 GDI+。
我怀疑问题在于GDIp无法使用PrintWindow抓取数据,因为软件将帧直接推送到GPU,但必须有一种方法来捕获该帧。
我的脚本:
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
OnExit, Exit
#Include Gdip.ahk
#Include GDIpHelper.ahk
SetUpGDIP()
WinGet, hwnd, ID, BlueStacks App Player
pBitmap := Gdip_BitmapFromHWND(hwnd)
Gdip_SaveBitmapToFile(pBitmap, "TestOutput.png", 100)
Gdip_DisposeImage(pBitmap)
return
实际要捕获的屏幕:
The actual file output by my script:
关于去哪里的任何想法或者关于如何访问帧缓冲区的任何指令?这不可能是以前没有人需要做的事情。