This is a really simple basic screen capture utility that needs no API calls. It captures the whole screen and then you can either save it into a file or show it (draw it actually) on the form.

'First, two global variables are declared to load a capture into a bitmap.

Dim bm As Bitmap

'The following is a capture function. A screen copy is made and assigned to a pointer.This is all that is needed to make an image copy of the screen.

Private Sub btCapture(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton2.Click.

Dim gr As Graphics
bm = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Drawing.Imaging.PixelFormat.Format32bppArgb)
gr = Graphics.FromImage(bm)
gr.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, NewSize(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height))

End Sub

'You may choose to view the captured image. Note the use of the WindowState property.

Private Sub btShow(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton3.Click
Dim newGr As Graphics = Me.CreateGraphics()
Me.WindowState = FormWindowState.Maximized
newGr.DrawImage(bm, New Point(0, 0))
End Sub

'Or you can save the image into a file. The following code calls the SaveFileDialog control.

Private Sub btSave(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton1.Click
SaveFileDialog1.ShowDialog()
End Sub

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e AsSystem.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
bm.Save(SaveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub