Captura de pantalla Incluyendo ventanas semitransparentes en .NET

Me gustaría una forma relativamente libre de hackear para hacer esto, ¿alguna idea? Por ejemplo, lo siguiente toma una captura de pantalla que no incluye la ventana semitransparente:

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
        Text = "Opaque Window"
        Dim win2 As New Form
        win2.Opacity = 0.5
        win2.Text = "Tranparent Window"
        win2.Show()
        win2.Top = Top + 50
        win2.Left = Left() + 50
        Dim bounds As Rectangle = System.Windows.Forms.Screen.GetBounds(Point.Empty)
        Using bmp As Bitmap = New Bitmap(bounds.Width, bounds.Height)
            Using g As Graphics = Graphics.FromImage(bmp)
                g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size)
            End Using
            bmp.Save("c:\temp\scn.gif")
        End Using
        Process.Start(New Diagnostics.ProcessStartInfo("c:\temp\scn.gif") With {.UseShellExecute = True})
    End Sub
End Class

O mi google-fu realmente apesta o esto no es tan fácil como parece. Estoy bastante seguro de por qué sucede esto debido a la forma en que el controlador de video tendría que separar la memoria para que esto funcione, pero no me importa por qué no funciona, solo quiero hacerlo sin ...
* Hacks clave de la pantalla de impresión
* Software de terceros
* Las funciones del SDK están bien, pero votaré a favor de cada objeto propiedad del usuario que pueda mostrarlo en un marco puro (es broma, pero sería bueno).

SiEsta es la única forma de hacerlo, ¿cómo hago eso en VB?
1M gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta