yo uso esto:
Código [Seleccionar]
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''' FUNCION PARA CAPTURAR LA PANTALLA
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SNAPSHOT = &H2C
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''' FUNCIÓN PARA COMPRIMIR BMP A JPEG
Private Declare Function ConvertBMPtoJPG Lib "ImageUtils.dll" (ByVal InputFile _
As String, ByVal OutputFile As String, _
ByVal OverWrite As Boolean, ByVal _
JPGCompression As Integer, ByVal _
SaveBMP As Boolean) As Integer
Código [Seleccionar]
Private Function Captura_Screen()
Dim foto1 As String
Dim FOTO2 As String
Dim compresion As Integer
'Captura la ventana activa
'keybd_event VK_SNAPSHOT, 1, 0, 0
' CAPTURA TODA LA PANTALLA
keybd_event VK_SNAPSHOT, 2, 0, 0
'mientras no se pueda cojer el contenido
Do While Clipboard.GetData = False
DoEvents
Loop
Picture1.Picture = Clipboard.GetData
'borramos el portapapeles
Clipboard.Clear
foto1 = App.Path + "\Fichas\" +"foto1.bmp"
FOTO2 = App.Path + "\Fichas\" +"foto2.jpg"
SavePicture Picture1.Picture, foto1
'Dim imagen As New Bitmap(New Bitmap(ruta), 320, 288)
'imagen.Save(ruta2, System.Drawing.Imaging.ImageFormat.Jpeg
Do While Len(Dir(foto1)) = 0
DoEvents
Loop
Dim ret As Long
'Text1: Ruta del Bmp
'Text2: ruta del archivo de salida >> JPG
'Check1: si esta en true se sobreescribe el Jpg
'Check2: si esta en false se elimina el BMP original
' compresion = 10 muy poca calidad
' compresion = 100 máxima calidad ' son %
compresion = 50
ret = ConvertBMPtoJPG(foto1, FOTO2, True, compresion, False)
If ret <> 0 Then
MsgBox "error al comprimir", vbCritical
End If
' Printer.Orientation = 2
Printer.Orientation = vbPRORLandscape
Printer.PaintPicture Picture1, 0, 0
Printer.EndDoc
End Function