我希望有一个相对无hack的方法来实现这个,有什么想法吗?例如,以下代码会截取不包含半透明窗口的屏幕截图:
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
我的谷歌搜索能力很差,或者说这并不像听起来那么简单。我相当确定是由于视频驱动程序必须分离内存才能使这个工作,但我并不关心它为什么不起作用,我只想在不使用以下方法的情况下完成它:
* Print-Screen键快捷键
* 第三方软件
* SDK函数可行,但如果用户拥有的对象可以在纯框架中显示给我看,我会点赞的(开玩笑,但这很好)。
如果 这是唯一的方法,那么如何在VB中实现?
非常感谢。