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.