Захват неактивного окна с помощью С#

У меня возникла проблема сделать скриншот окна BlueStacks (это эмулятор Android) с какой-то игрой в нем.

Сначала я попробовал метод CopyFromScreen, и он отлично работает. Но через какое-то время я хочу сделать скриншот окна, когда оно не отображается, чтобы выполнять какую-то другую работу во время него.

Вскоре я нашел хорошее решение - PrintWindow, но по какой-то причине он делает захват черного экрана (я вижу кадр Bluestacks окно, а внутри черный квадрат).

Я подумал, что в этой игре виноват какой-то 3D, и попытался использовать библиотеку SlimDX, это здорово, но это не помогло. t help - он фиксирует только отображаемые пиксели, а не неактивное окно.

Итак, как мне получить скриншот окна по его hWnd, когда оно не активно? Или, может быть, я могу использовать другие методы получения информации из Bluestacks? Есть ли у него API? Мне нужна картинка из игры, чтобы распознавать числа.

Любое решение будет с благодарностью!


person G. Goncharov    schedule 30.10.2014    source источник


Ответы (1)


Вы можете использовать команды ADB:

adb shell /system/bin/screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.pngc:\screenshot.png

и ваш снимок экрана будет в C:\screenshot.png для получения дополнительной информации вы можете увидеть Android Debug Bridge.

person Sepehr Parsa    schedule 05.02.2015