Differenze tra le versioni di "Uso della classe DesktopWindow"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.
 
In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.
  
Le sue risorse attualmente sono:
 
.Activate()
 
.Close()
 
.Desktop
 
.Frame
 
.FullScreen
 
.Geometry
 
.GetIcon()
 
.GetScreenshot
 
.H
 
.Height
 
.Icon
 
.Id
 
.Maximized
 
.Minimized
 
.Move()
 
.Name
 
.Refresh()
 
.Resize()
 
.Shaded
 
.SkipTaskbar
 
.Sticky
 
.VisibleName
 
.W
 
.Width
 
.X
 
.Y
 
  
 
+
Mostriamo qualche esempio pratico:
Esempio pratico:
 
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
Riga 40: Riga 12:
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
 
   
 
   
  i = Desktop.FindWindow("<font color=gray>'<i>Nome_della_finestra</i></font>")
+
  i = Desktop.FindWindow("<font color=gray>'<i>Nome_della_finestra</i></font>")
 
   
 
   
  With dw = New DesktopWindow(i[0])
+
  With dw = New DesktopWindow(i[0])
 
  <font color=gray>' <i>Otteniamo informazioni dalla finestra individuata, e la gestiamo:</i></font>
 
  <font color=gray>' <i>Otteniamo informazioni dalla finestra individuata, e la gestiamo:</i></font>
    Print Hex(.Id), .VisibleName, .Width, .Height
+
    Print Hex(.Id), .VisibleName, .Width, .Height
    .Move(100, 200, 100, 300)
+
    .Move(100, 200, 100, 300)
  End With
+
  End With
+
 
 
  '''End'''
 
  '''End'''
  
Riga 56: Riga 28:
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
 
   
 
   
  Me.Show
+
  Me.Show
 
   
 
   
  With dw = New DesktopWindow(Me.Id)
+
  With dw = New DesktopWindow(Me.Id)
    Print Hex(.Id), .VisibleName, .Width, .Height
+
    Print Hex(.Id), .VisibleName, .Width, .Height
    .Move(100, 200, 100, 300)
+
    .Move(100, 200, 100, 300)
  End With
+
  End With
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 73: Riga 45:
 
   Dim i As Image
 
   Dim i As Image
 
   Dim p As Picture
 
   Dim p As Picture
+
 
+
  With w
  With w
 
 
  <font color=gray>' ''Assegna un nome di comodo alla finestra (non è indispensabile, e <span style="text-decoration:underline">non</span> modificherà il nome visibile in testa alla finestra):''</font>
 
  <font color=gray>' ''Assegna un nome di comodo alla finestra (non è indispensabile, e <span style="text-decoration:underline">non</span> modificherà il nome visibile in testa alla finestra):''</font>
    .Window.Name = "<i>Nome_finestra</i>"
+
    .Window.Name = "<i>Nome_finestra</i>"
 
  <font color=gray>' ''Se invece si pone solo: <b>.Name</b> senza assegnazione, allora il nome sarà quello della finestra del programma.''</font>
 
  <font color=gray>' ''Se invece si pone solo: <b>.Name</b> senza assegnazione, allora il nome sarà quello della finestra del programma.''</font>
 
   
 
   
 
  <font color=gray>' ''Carica un'immagine, che sarà poi mostrata appresso in dw:''</font>
 
  <font color=gray>' ''Carica un'immagine, che sarà poi mostrata appresso in dw:''</font>
    .Icon = Picture.Load("<i>percorso_immagine</i>")
+
    .Icon = Picture.Load("<i>percorso_immagine</i>")
 
  <font color=gray>' ''Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:''</font>
 
  <font color=gray>' ''Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:''</font>
    TextLabel1.Text = .Name
+
    TextLabel1.Text = .Name
  End With
+
  End With
+
 
+
  dw = New DesktopWindow(w.Handle) <font color=gray>' ''"w.Handle" è il numero identificativo dell'handle della finestra''
  dw = New DesktopWindow(w.Handle) <font color=gray>' <i>"w.Handle" è il numero identificativo dell'handle della finestra rappresentata dalla variabile "w"</i>
+
                                  ' ''rappresentata dalla variabile "w"''
+
 
  ' <i>invece:</i>
+
  ' <i>invece:</i></font>
   dw = New DesktopWindow(Desktop.ActiveWindow) ' <i>"Desktop.ActiveWindow" è la finestra attiva di un programma in quel momento</i></font>
+
   With dw = New DesktopWindow(Desktop.ActiveWindow) <font color=gray>' <i>"Desktop.ActiveWindow" è la finestra attiva di un programma in quel momento</i></font>
+
    Print .Desktop
+
    Print .FullScreen
  With dw
 
    Print .Desktop
 
    Print .FullScreen
 
 
  <font color=gray>' <i>Assegna alla variabile "i" l'icona precedentemente assegnata alla variabile "w":</i></font>
 
  <font color=gray>' <i>Assegna alla variabile "i" l'icona precedentemente assegnata alla variabile "w":</i></font>
    i = .Icon
+
    i = .Icon
    Print .Height
+
    Print .Height
    Print .Id
+
    Print .Id
    Print .Maximized
+
    Print .Maximized
    Print .Name
+
    Print .Name
    Print .SkipTaskbar
+
    Print .SkipTaskbar
    Print .VisibleName
+
    Print .VisibleName
  End With
+
  End With
 
   
 
   
 
  <font color=gray>' <i>andiamo a vedere l'eventuale icona della finestra del programma:</i></font>
 
  <font color=gray>' <i>andiamo a vedere l'eventuale icona della finestra del programma:</i></font>
  p = i.Picture
+
  p = i.Picture
  PictureBox1.Picture = p
+
  PictureBox1.Picture = p
 
   
 
   
 +
'''End'''
 +
 +
 +
Per assegnare un Form ad uno specifico schermo si userà la Proprietà "''.Desktop''":
 +
'''Public''' Sub Button1_Click()
 +
 
 +
  Dim dw As DesktopWindow
 +
 
 +
  With dw = New DesktopWindow(Me.Id)
 +
<font color=gray>' ''Spostiamo il Form principale della nostra applicazione sul terzo desktop (indice 2):''</font>
 +
    .Desktop = 2
 +
  End With
 +
   
 
  '''End'''
 
  '''End'''

Versione delle 19:40, 25 lug 2020

La classe DesktopWindow è usata per rappresentare una finestra di primo livello.

In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.


Mostriamo qualche esempio pratico:

Public Sub Form_Open()

 Dim i As Integer[]

' poiché DesktopWindow è una classe, gli si associa una variabile del tipo di quella Classe:
 Dim dw As DesktopWindow

 i = Desktop.FindWindow("'Nome_della_finestra")

 With dw = New DesktopWindow(i[0])
' Otteniamo informazioni dalla finestra individuata, e la gestiamo:
   Print Hex(.Id), .VisibleName, .Width, .Height
   .Move(100, 200, 100, 300)
 End With
 
End


Se la finestra è il Form principale dell'applicazione, allora il suo Id si individuerà facilmente:

Public Sub Form_Open()

 Dim dw As DesktopWindow

 Me.Show

 With dw = New DesktopWindow(Me.Id)
   Print Hex(.Id), .VisibleName, .Width, .Height
   .Move(100, 200, 100, 300)
 End With

End


La Classe DesktopWindow può rappresentare anche una finestra creata virtualmente con una variabile di tipo "Window":

Public Sub Form_Open()

 Dim dw As DesktopWindow
 Dim w As New Window
 Dim i As Image
 Dim p As Picture
 
 With w
' Assegna un nome di comodo alla finestra (non è indispensabile, e non modificherà il nome visibile in testa alla finestra):
   .Window.Name = "Nome_finestra"
' Se invece si pone solo: .Name senza assegnazione, allora il nome sarà quello della finestra del programma.

' Carica un'immagine, che sarà poi mostrata appresso in dw:
   .Icon = Picture.Load("percorso_immagine")
' Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:
   TextLabel1.Text = .Name
 End With
 
 dw = New DesktopWindow(w.Handle) ' "w.Handle" è il numero identificativo dell'handle della finestra
                                  ' rappresentata dalla variabile "w"
 
' invece:
 With dw = New DesktopWindow(Desktop.ActiveWindow) ' "Desktop.ActiveWindow" è la finestra attiva di un programma in quel momento
   Print .Desktop
   Print .FullScreen
' Assegna alla variabile "i" l'icona precedentemente assegnata alla variabile "w":
   i = .Icon
   Print .Height
   Print .Id
   Print .Maximized
   Print .Name
   Print .SkipTaskbar
   Print .VisibleName
 End With

' andiamo a vedere l'eventuale icona della finestra del programma:
 p = i.Picture
 PictureBox1.Picture = p

End


Per assegnare un Form ad uno specifico schermo si userà la Proprietà ".Desktop":

Public Sub Button1_Click()
 
 Dim dw As DesktopWindow
  
 With dw = New DesktopWindow(Me.Id)
' Spostiamo il Form principale della nostra applicazione sul terzo desktop (indice 2):
   .Desktop = 2
 End With
   
End