ciao gibra.
ho questo codice che usa proprio quel metodo:

---------------------
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

Private Declare Function ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long

Private Type POINTAPI
x As Long
y As Long
End Type



Private Sub Command1_Click()
Dim picTmp As PictureBox

Dim CaptPic As StdPicture
Dim pt As POINTAPI
Dim Px As Long
Dim Py As Long
Dim pW As Long
Dim pH As Long


If frmStampa.Picture3 <> 0 Then


Clipboard.Clear
keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents

Set CaptPic = Clipboard.GetData()

ClientToScreen Picture3.hWnd, pt

Px = pt.x * Screen.TwipsPerPixelX
Py = pt.y * Screen.TwipsPerPixelY
pW = Picture3.ScaleWidth
pH = Picture3.ScaleHeight

Set picTmp = Me.Controls.Add("VB.PictureBox", "tmp")

picTmp.Width = Picture3.Width
picTmp.Height = Picture3.Height
picTmp.AutoRedraw = True
picTmp.PaintPicture CaptPic, 0, 0, pW, pH, Px, Py, pW, pH

'SavePicture picTmp.Image, "C:\ImmagineSalvata.bmp"
'...stampa


Me.Controls.Remove ("tmp")
Set picTmp = Nothing

End If

End Sub
---------------------


ma non dà l'esito previsto. Ossia se lo lancio e poi provo a incollare l'immagine che ho catturato, con il codice riportato, in un programma di grafica (paint di windows) mi si ripropone tutto lo schermo catturato e non solo la picture che mi serve. Cioè, credo che non effettui il crop in memoria insomma.