Differenze tra le versioni di "Ottenere la schermata (screenshot) della finestra di un programma"

Da Gambas-it.org - Wikipedia.
(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>&#091;[[#Note|nota 1]]&#093;</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()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Dim pc As Picture
 
   Dim pc As Picture
 
    
 
    
  pc = Desktop.Windows.FromHandle(Me.Handle).GetScreenshot(False)
+
  pc = Desktop.Windows.FromHandle(Me.Handle).GetScreenshot(True)
 
      
 
      
  pc.Save("/tmp/immagine.png", 100)
+
  pc.Save("/tmp/immagine.png", 100)
 
    
 
    
  '''End'''
+
  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()
+
  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]
+
  i = Desktop.FindWindow("*Calculator*", Null, Null)[0]
 
    
 
    
  pc = Desktop.Windows.FromHandle(i).GetScreenshot(False)
+
  pc = Desktop.Windows.FromHandle(i).GetScreenshot(True)
 
      
 
      
  pc.Save("/tmp/immagine.png", 100)
+
  pc.Save("/tmp/immagine.png", 100)
 
    
 
    
  '''End'''
+
  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