2016-04-12 26 views
2

私はいくつかのwin apisを使用して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

は、仮想マシン内のアンドロイドのラン(おそらく仮想ボックス)のように見える、ではありませんそれが問題なのか、このような仮想スクリーンをキャプチャする方法があるのか​​どうかは確かです。

答えて

0

BMPファイル形式を使用して画面をキャプチャしているようです。イメージを.pngの代わりに.bmpとして保存してください。これはコード内で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"); 
関連する問題