2016-04-12 2 views
2

Я пытаюсь захватить экран эмулятора MEmu с помощью некоторого выигрыша, но все, что я пробовал, я продолжаю получать черный экран, скриншот имеет правильный размер, но все черное.Захват экрана эмулятора MEmu

Вот код, я использую в настоящее время:

IntPtr hwnd = Process.GetProcessByName("Memu")[0].MainWindowHandle; //Gets the first process 

RECT2 rc; 
GetWindowRect(hwnd, out rc); 

Bitmap bmp = new Bitmap(rc.Width, rc.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); 
Graphics gfxBmp = Graphics.FromImage(bmp); 
IntPtr hdcBitmap = gfxBmp.GetHdc(); 

PrintWindow(hwnd, hdcBitmap, 1); 

gfxBmp.ReleaseHdc(hdcBitmap); 
gfxBmp.Dispose(); 

bmp.Save("test.png"); 

А вот вывод изображения: Output image from screen capture

Похоже, андроид работает в виртуальной машине (возможно, Virtual Box), не конечно, если это проблема, и если есть способ захватить виртуальные экраны, подобные этому.

ответ

0

Похоже, вы снимаете экран с использованием формата BMP. Попробуйте сохранить изображение как .bmp вместо .png, так как вы классифицируете его как BMP в своем коде.

Попробуйте это:

IntPtr hwnd = Process.GetProcessByName("Memu")[0].MainWindowHandle; //Gets the first process 

RECT2 rc; 
GetWindowRect(hwnd, out rc); 

Bitmap bmp = new Bitmap(rc.Width, rc.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); 
Graphics gfxBmp = Graphics.FromImage(bmp); 
IntPtr hdcBitmap = gfxBmp.GetHdc(); 

PrintWindow(hwnd, hdcBitmap, 1); 

gfxBmp.ReleaseHdc(hdcBitmap); 
gfxBmp.Dispose(); 

bmp.Save("test.bmp"); 
Смежные вопросы