Сделать снимок экрана Включая полупрозрачные окна в .NET

Я хотел бы относительно безрукий способ сделать это, какие-нибудь идеи? Например, следующее делает снимок экрана, который не включает полупрозрачное окно:

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

Либо мой гугл-фу действительно отстой, либо это не так просто, как кажется. Я почти уверен, почему это происходит из-за того, что видеодрайвер должен разделять память, чтобы это работало, но мне все равно, почему это не работает, я просто хочу сделать это без ...
* Печать экранных ключей
* Стороннее программное обеспечение
* С SDK все в порядке, но я опишу каждый объект, принадлежащий пользователю, который может показать его в чистом фреймворке (шучу, но было бы неплохо).

Еслиэто это единственный способ сделать это, как я могу сделать это в VB?
1М спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос