2016-04-12 15 views
2

Bazı win apis kullanarak MEmu öykünücüsü ekranını yakalamaya çalışıyorum, fakat denediğim her şey siyah bir ekran almaya devam ediyor, ekran görüntüsü doğru boyutta ancak hepsi siyah. İşte MEmu öykünücüsü ekranını yakalama

şimdi kullanıyorum bazı kod:

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"); 

Ve burada çıkış resimdir: Output image from screen capture

sanal makinede android çalışır (muhtemelen sanal Box) benziyor, değil sorun buysa ve bunun gibi sanal ekranları yakalamanın bir yolu varsa.

cevap

0

BMP dosya biçimini kullanarak ekranı yakaladığınız anlaşılıyor. Resmi kodunuzda BMP olarak sınıflandırdığınızdan, .png yerine .bmp olarak kaydetmeyi deneyin.

bu deneyin:

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");