Capturar captura de tela Incluindo janelas semitransparentes no .NET

Gostaria de uma maneira relativamente livre de hackers para fazer isso, alguma idéia? Por exemplo, o seguinte captura uma captura de tela que não inclui a janela 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

Ou o meu google-fu é realmente péssimo ou isso não é tão fácil quanto parece. Tenho certeza de por que isso está acontecendo, devido à maneira como o driver de vídeo precisaria separar a memória para fazer isso funcionar, mas não me importo por que não funciona, só quero fazê-lo sem ...
* hacks de chave na tela de impressão
* Software de terceiros
* As funções do SDK estão OK, mas eu atualizarei todos os objetos de propriedade do usuário que possam me mostrar em estrutura pura (Brincadeirinha, mas seria legal).

E seeste é a única maneira de fazer isso, como faço isso no VB?
1M obrigado.

questionAnswers(1)

yourAnswerToTheQuestion