Non funzione perchè invia il carattere alla tua applicazione e non al sistema!
Per fare questo devi usare la seguente API:
codice:
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
con le seguenti costanti:
codice:
Const KEYEVENTF_EXTENDEDKEY = &H1 'pressione del tasto (keyDown)
Const KEYEVENTF_KEYUP = &H2 'rilascio del tasto premuto (keyUp)
Questa funzione simula la pressione di un tasto della tastiera, il cui codice è nell' argomento bVk.
E' importante ripetere l'operazione prima con dwFlags = KEYEVENTF_EXTENDEDKEY e poi con KEYEVENTF_KEYUP , in questo modo "preme e rilascia" il tasto, senza lasciarlo giù.
Ecco la funzione che cercavi (l'argomento TuttoSchermo determina se copiare nella clipboard solo la finestra attuale o tutto lo schermo)
codice:
Sub PrintScreen(TuttoSchermo as Boolean)
If TuttoSchermo Then
'copia nella clipboard l'intero contenuto dello schermo
keybd_event vbKeySnapshot, 1, KEYEVENTF_EXTENDEDKEY, 0 'simula la pressione del tasto "Stamp" o "Print"
keybd_event vbKeySnapshot, 1, KEYEVENTF_KEYUP, 0 'simula il rilascio del tasto "Stamp" o "Print"
Else
'copia nella clipboard il solo contenuto della finestra attiva
keybd_event vbKeySnapshot, 0, KEYEVENTF_EXTENDEDKEY, 0 'simula la pressione dei tasti "Alt" +"Stamp" o "Print"
keybd_event vbKeySnapshot, 1, KEYEVENTF_KEYUP, 0 'simula il rilascio dei tasti "Alt" +"Stamp" o "Print"
End If
End Sub