Uso della classe DesktopWatcher
Vai alla navigazione
Vai alla ricerca
La classe DesktopWatcher osserva il desktop sullo schermo. Essa consente all'utente di essere in grado di rilevare l'attività dello schermo con i gestori di eventi:
variabileTipoDesktopWatcher_nomeEvento(parametro-eventuale).
DesktopWatcher solleva i seguenti eventi:
- _ActiveWindow: l'evento è sollevato se si cambia desktop, ossia se si passa ad un altro desktop dello schermo; e se la finestra attiva è cambiata. Per sapere ora quale è, usare Desktop.ActiveWindow .
- _Change: il desktop virtuale corrente è cambiato.
- _Count: il numero dei desktop virtuali è cambiato.
- _Geometry: la geometria del desktop è mutata.
- _WindowGeometry: l'evento è sollevato, se una specifica finestra è stata spostata o ridimensionata.
- _WindowIcon: l'evento è sollevato, se l'icona di una specifica finestra è cambiata.
- _WindowName: l'evento è sollevato, se il nome o il nome visibile di una specifica finestra è cambiato.
- _WindowState: l'evento è sollevato, se lo stato di una specifica finestra è cambiato.
- _Windows: l'evento viene sollevato se l'elenco delle finestre è cambiato, cioè se una finestra è stata aperta, chiusa, o se l'ordine di sovrapposizione è cambiato. Per scorrere la lista e vedere quali finestre vi sono, usare Desktop.Windows .
Esempi pratici
Private dw As DesktopWatcher Public Sub Form_Open() With dw = New DesktopWatcher(Me) As "dw" ' Restituisce o imposta se l'oggetto DesktopWatcher guarda solo la finestra principale: .RootWindow = True End With End ' Se avvengono dei cambiamenti all'interno del desktop, ma anche: ' se si cambia desktop, ossia se si passa ad un altro desktop dello schermo; ' se viene spostato il focus da una finestra di un programma alla finestra di un altro programma; ' allora viene sollevato questo evento: Public Sub dw_ActiveWindow( ) TextArea1.Text &= "Modifica all'interno del Desktop !\n" End ' Se si cambia desktop, ossia se si passa ad un altro desktop dello schermo, ' allora viene sollevato questo evento: Public Sub dw_Change( ) TextArea1.Text &= "Cambio Desktop !\n" End ' Questo evento viene sollevato se l'elenco delle finestre è cambiato, ' cioè se una finestra è stata aperta, chiusa, o se l'ordine di sovrapposizione è cambiato: Public Sub dw_Windows( ) TextArea1.Text &= "Evento _Windows !\n" End
In quest'altro esempio verrà sollevato l'evento "_WindowGeometry( )" della Classe "DesktopWatcher", qualora venga modificata una dimensione della finestra del programma:
Private dwt As DesktopWatcher Public Sub Form_Open() dwt = New DesktopWatcher As "DesktopWatcher" End Public Sub DesktopWatcher_WindowGeometry(dwd As DesktopWindow) Print dwd.W, dwd.H End
In quest'altro esempio si utilizzerà l'Evento "_Windows" della Classe "DesktopWatcher", per osservare l'apertura della finestra di Dialogo utile per caricare un file.
In tal caso il "Titolo" della finestra di Dialogo ".OpenFile" dovrà essere "certo" e "univoco".
Private wa As DesktopWatcher
Private dw As DesktopWindow
Public Sub Form_Open()
' Osserva tutte le finestre, presenti e quelle eventuali future, sulla Scrivania:
wa = New DesktopWatcher As "DWatch"
End
Public Sub Button1_Click()
With Dialog
' Il "Titolo" della finestra di Dialo deve essere certo e univoco.
' (In questo esempio è impostato il titolo: Abcde).
.Title = "Abcde"
If .OpenFile() Then Return
End With
End
Public Sub DWatch_Windows() ' Se la l'elenco delle finestre aperte sulla Scrivania è cambiato...
' ...allora si verifica se si è aperta proprio la finestra "Abcde":
If Desktop.FindWindow("Abcde", Null, Null).Count > 0 Then
' Se è così, allora la finestra di Dialogo, avente Titolo "Abcde", viene ridimensionata:
With dw = New DesktopWindow(Desktop.FindWindow("Abcde", Null, Null)[0])
.Resize(Screen.AvailableWidth, Screen.AvailableHeight)
End With
Endif
End