Ottenere informazioni sulle icone presenti sulla Scrivania
Vai alla navigazione
Vai alla ricerca
Per ottenere informazioni sulle icone presenti sulla Scrivania (Desktop) e a quali file sono afferenti, si potrà utilizzare il programma "GIO" facendolo seguire dall'opzione "info".
Ovviamente nel codice Gambas il programma "GIO" sarà lanciato con la risorsa "Shell":
Shell gio info /percorso/del/file
Individuare le icone poste sulla Scrivania passandoci sopra con il puntatore del mouse
Mostriamo di seguito un possibile codice che, utilizzando il programma "GIO", permette di individuare le icone poste sulla Scrivania, mentre si sorvola su di esse con il puntatore del mouse, e di ottenere informazioni sui file ai quali esse sono collegate.
Public Struct IconaFileDesktop
nome As String
x As Short
y As Short
rt As Rect
End Struct
Private icone As New IconaFileDesktop[]
Private PERCORSO As String = User.home &/ "Scrivania"
Private TImer1 As Timer
Public Sub Form_Open()
Dim nomefile, s As String
Dim ifd As IconaFileDesktop
' Carica tutti i file corrispondenti alle icone presenti sulla Scrivania:
For Each nomefile In Dir(PERCORSO, "*", gb.File)
' Usa la funzione "Shell" per lanciare il comando "GIO" (è necessario inserire il percorso del file fra la singola virgoletta):
Shell "gio info '" & PERCORSO &/ nomefile & "'" To s
If IsNull(s) Then Continue
' Carica nella "Struttura" i dati utili del file individuato dalla funzione "Dir()":
With ifd = New IconaFileDesktop
.nome = nomefile
.x = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[1])
.y = Val(Scan(s, "*::nemo-icon-position: *,*\n*")[2])
' Stabilisce un'area quadrata standard di 48 pixel per ciascuna icona di file individuato:
.rt = New Rect(.x, .y, 48, 48)
End With
icone.Push(ifd)
Next
With timer1 = New Timer As "Timer1"
.Delay = 50
.Start
End With
End
Public Sub Timer1_Timer()
Dim c As Short
TextArea1.Clear
For c = 0 To icone.Max
' Se le coordinate x,y in pixel correnti in cui si trova il puntatore del mouse rientrano in un'area quadrata caricata, va a vedere a quale icona e file appartiene:
If icone[c].rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then
' Mostra alcune caratteristiche del file al quale corrisponde l'icona sorvolata dal puntatore del mouse:
TextArea1.Text = "== Caratteristiche del file ==\n" &
"\nPercorso: " & Stat(PERCORSO &/ icone[c].nome).Path &
"\nDimensione: " & Stat(PERCORSO &/ icone[c].nome).Size & " Byte" &
"\nUltimo Accesso: " & Stat(PERCORSO &/ icone[c].nome).LastAccess &
"\nUltima modifica: " & Stat(PERCORSO &/ icone[c].nome).LastModified &
"\nPermessi: " & Stat(PERCORSO &/ icone[c].nome).Auth &
"\nUtente: " & Stat(PERCORSO &/ icone[c].nome).User &
"\nGruppo: " & Stat(PERCORSO &/ icone[c].nome).Group &
"\nMimetype icona: " & DesktopMime.FromFile(Stat(PERCORSO &/ icone[c].nome).Path).Type
Endif
Next
End