Capture-Screenshot Einschließlich semitransparenter Fenster in .NET

Ich möchte einen relativ hackfreien Weg, um dies zu tun, irgendwelche Ideen? Das folgende Beispiel zeigt einen Screenshot, in dem das semitransparente Fenster nicht enthalten ist:

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

Entweder ist mein google-fu wirklich beschissen oder das ist nicht so einfach, wie es sich anhört. Ich bin mir ziemlich sicher, warum dies passiert, weil der Grafiktreiber den Speicher trennen müsste, damit dies funktioniert, aber es ist mir egal, warum es nicht funktioniert, ich möchte es nur ohne ...
* Schlüsselhacks für Druckbildschirm
* Software von Drittanbietern
* SDK-Funktionen sind in Ordnung, aber ich werde jedes Objekt, das dem Benutzer gehört und das mir in einem reinen Framework angezeigt werden kann, positiv bewerten (nur ein Scherz, aber es wäre nett).

WennDie ist die einzige Möglichkeit, wie mache ich das in VB?
1M danke.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage