以下のコードのように DesktopWindow ハンドルを取得する方法を使用して、特定の領域を取得したいと思います。
[DllImport("user32.dll")]
static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgn, uint flags);
[DllImport("user32.dll")]
static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc);
public void ScreenShot()
{
try
{
IntPtr hwnd = GetDesktopWindow();
IntPtr hdc = GetDCEx(hwnd, IntPtr.Zero, 1027);
Point temp = new Point(40, 40);
Graphics g = Graphics.FromHdc(hdc);
Bitmap bitmap = new Bitmap(mPanel.Width, mPanel.Height, g);
g.CopyFromScreen(PointToScreen(temp) , PointToScreen(PictureBox.Location) , PictureBox.Size);
}
このコードは実際に動作しますが、CopyFromScreen のプロセスから作成されたコピー イメージを取得したいと考えています。Graphics.FromImage(bitmap) のようなコードを使用してみましたが、必要な画像を取得できませんでした... つまり、Image をコピーしました。Graphics オブジェクト fromHdc を使用すると、ビットマップ イメージを取得する方法が見つかりませんでした。DCを使用する必要があります....適切な方法はありますか??