Differenze tra le versioni di "Ottenere la schermata (screenshot) della finestra di un programma"
(Creata pagina con "Per ottenere la schermata (screenshot) della finestra di un programma Gambas o di un programma esterno, si potranno utilizzare alcune risorse della Classe ''Desktop'' attivand...") |
|||
(6 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Per ottenere la schermata (screenshot) della finestra di un programma Gambas o di un programma esterno, si potranno utilizzare alcune risorse della Classe ''Desktop'' attivando i Componenti ''gb.desktop'' e ''gb.desktop.x11'' . | + | Per ottenere la schermata (screenshot) della finestra di un programma Gambas <SUP>[[[#Note|nota 1]]]</sup> o di un programma esterno, si potranno utilizzare alcune risorse della Classe ''Desktop'' attivando i Componenti ''gb.desktop'' e ''gb.desktop.x11'' . |
Mostriamo un esempio, nel quale verrà effettuata un'istantanea schermata della finestra di un programma Gambas, dalla quale si otterrà un file immagine: | Mostriamo un esempio, nel quale verrà effettuata un'istantanea schermata della finestra di un programma Gambas, dalla quale si otterrà un file immagine: | ||
− | + | Public Sub Button1_Click() | |
Dim pc As Picture | Dim pc As Picture | ||
− | + | pc = Desktop.Windows.FromHandle(Me.Handle).GetScreenshot(True) | |
− | + | pc.Save("/tmp/immagine.png", 100) | |
− | + | End | |
− | + | In quest'altro caso, tenendo ''attiva'' la finestra di un programma esterno, se ne otterrà una schermata e quindi un relativo file immagine. | |
− | |||
− | In quest'altro caso, tenendo ''attiva'' la finestra di un programma, se ne otterrà una schermata e quindi un relativo file immagine. | ||
<BR>Poniamo il caso di avere attiva la finestra della calcolatrice (il nome della sua finestra è ''Calculator''): | <BR>Poniamo il caso di avere attiva la finestra della calcolatrice (il nome della sua finestra è ''Calculator''): | ||
− | + | Public Sub Button1_Click() | |
Dim i As Integer | Dim i As Integer | ||
Dim pc As Picture | Dim pc As Picture | ||
− | + | i = Desktop.FindWindow("*Calculator*", Null, Null)[0] | |
− | + | pc = Desktop.Windows.FromHandle(i).GetScreenshot(True) | |
− | + | pc.Save("/tmp/immagine.png", 100) | |
− | ''' | + | End |
+ | |||
+ | |||
+ | ==Usando alcune risorse del Componente ''gb.media''== | ||
+ | Si potranno anche usare le risorse delle Classi ''MediaPipeline'' e ''MediaControl'' del Componente ''gb.media'', assegnando l'identificativo della finestra del programma, sia esso un programma Gambas o esterno. | ||
+ | <BR>Sarà catturato nel file immagine anche eventualmente il puntatore del mouse. | ||
+ | Public Sub Button1_Click() | ||
+ | |||
+ | Dim pl As MediaPipeline | ||
+ | Dim src, con, png, snk As MediaControl | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | src = New MediaControl(pl, "ximagesrc") | ||
+ | src["xid"] = Me.Id <FONT Color=gray>' ''Assegna il numero identificativo della finestra di un programma Gambas o esterno, dellla quale si otterrà il file PNG''</font> | ||
+ | con = New MediaControl(pl, "videoconvert") | ||
+ | png = New MediaControl(pl, "pngenc") | ||
+ | snk = New MediaControl(pl, "filesink") | ||
+ | snk["location"] = "/tmp/immagine.png" | ||
+ | |||
+ | src.LinkTo(con) | ||
+ | con.LinkTo(png) | ||
+ | png.LinkTo(snk) | ||
+ | |||
+ | <FONT Color=gray>' ''Crea il file PNG e poi chiude il flusso di dati:''</font> | ||
+ | pl.Play() | ||
+ | pl.Stop() | ||
+ | pl.Close | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | * Vedere anche questa pagina della Wiki: [[Ottenere un'immagine del Form]]. |
Versione attuale delle 16:37, 10 giu 2024
Per ottenere la schermata (screenshot) della finestra di un programma Gambas [nota 1] o di un programma esterno, si potranno utilizzare alcune risorse della Classe Desktop attivando i Componenti gb.desktop e gb.desktop.x11 .
Mostriamo un esempio, nel quale verrà effettuata un'istantanea schermata della finestra di un programma Gambas, dalla quale si otterrà un file immagine:
Public Sub Button1_Click() Dim pc As Picture pc = Desktop.Windows.FromHandle(Me.Handle).GetScreenshot(True) pc.Save("/tmp/immagine.png", 100) End
In quest'altro caso, tenendo attiva la finestra di un programma esterno, se ne otterrà una schermata e quindi un relativo file immagine.
Poniamo il caso di avere attiva la finestra della calcolatrice (il nome della sua finestra è Calculator):
Public Sub Button1_Click() Dim i As Integer Dim pc As Picture i = Desktop.FindWindow("*Calculator*", Null, Null)[0] pc = Desktop.Windows.FromHandle(i).GetScreenshot(True) pc.Save("/tmp/immagine.png", 100) End
Usando alcune risorse del Componente gb.media
Si potranno anche usare le risorse delle Classi MediaPipeline e MediaControl del Componente gb.media, assegnando l'identificativo della finestra del programma, sia esso un programma Gambas o esterno.
Sarà catturato nel file immagine anche eventualmente il puntatore del mouse.
Public Sub Button1_Click() Dim pl As MediaPipeline Dim src, con, png, snk As MediaControl pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") src["xid"] = Me.Id ' Assegna il numero identificativo della finestra di un programma Gambas o esterno, dellla quale si otterrà il file PNG con = New MediaControl(pl, "videoconvert") png = New MediaControl(pl, "pngenc") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/immagine.png" src.LinkTo(con) con.LinkTo(png) png.LinkTo(snk) ' Crea il file PNG e poi chiude il flusso di dati: pl.Play() pl.Stop() pl.Close End
Note
- Vedere anche questa pagina della Wiki: Ottenere un'immagine del Form.