Ottenere informazioni sulle icone presenti sulla Scrivania
Da Gambas-it.org - Wikipedia.
Versione del 10 mag 2021 alle 00:27 di Vuott (Discussione | contributi) (Creata pagina con "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...")
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