我目前正在编写一个小脚本,该脚本从 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
要捕获的实际屏幕:
我的脚本输出的实际文件:
关于去哪里的任何想法或关于如何访问帧缓冲区的任何指令?这不可能是以前没有人需要做的事情。