title: PrintWindow / CopyFromScreen getting selected area
body: <p>Hey all i have this code here:</p>
  
  <pre><code>Dim p As Process = Process.GetProcessesByName("Cal").FirstOrDefault
  Dim target_hwnd As Long = FindWindow(vbNullString, "Calculator")
  
  If p IsNot Nothing Then
      SetWindowPos(target_hwnd, 0, winSize(0), winSize(1), winSize(2), winSize(3), 0)
      AppActivate(p.Id)
  
      Dim img As New Bitmap(145, 145) 'size fo the caption area
      Dim gr As Graphics = Graphics.FromImage(img)
  
      'sets the offsets and use image size to set region
      gr.CopyFromScreen(New Point(winSize(0) + 44, winSize(1) + 179), Point.Empty, img.Size)
      img.Save("test.jpg", Drawing.Imaging.ImageFormat.Jpeg)
      Process.Start("test.jpg")
  End If
  </code></pre>
  
  <p>As long as i have the window <strong>in view</strong> it takes the screen shot just fine without any problems. However when i <strong>move the form off screen</strong> (where i am unable to see it) it only captures a <strong>black image</strong>.</p>
  
  <p>I've been trying this code out:</p>
  
  <pre><code>Private Declare Function PrintWindow Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal hdcBlt As IntPtr, ByVal nFlags As UInt32) As Boolean
  Dim screenCapture As Bitmap
  Dim otherForm As New Form
  
  Private Sub CaptureScreen()
      Dim target_hwnd As Long = FindWindow(vbNullString, "Calculator")
      SetWindowPos(target_hwnd, 0, winSize(0), winSize(1), winSize(2), winSize(3), 0)
  
      screenCapture = New Bitmap(245, 245)
      Dim g As Graphics = Graphics.FromImage(screenCapture)
      Dim hdc As IntPtr = g.GetHdc
      Form1.PrintWindow(target_hwnd, hdc, Nothing)
      g.ReleaseHdc(hdc)
      g.Flush()
      g.Dispose()
  
      If IO.File.Exists("d:\test.jpg") Then
          IO.File.Delete("d:\test.jpg")
      End If
  
      screenCapture.Save("d:\test.jpg", Drawing.Imaging.ImageFormat.Jpeg)
  End Sub
  
  Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
      CaptureScreen()
  End Sub
  </code></pre>
  
  <p>Now the above code <strong>DOES</strong> capture an image even when the window is off screen. The problem with the code above is that i can't tell it to only capture an area within that window that i was able to do with the <strong>CopyFromScreen</strong> i first posted.</p>
  
  <p>Is this possible using the <strong>PrintWindow</strong>?</p>