Differenze tra le versioni di "Conoscere quale file audio un programma sta eseguendo"
Da Gambas-it.org - Wikipedia.
Riga 3: | Riga 3: | ||
− | + | Public Sub Main() | |
− | + | ||
Dim prog, cartella, s, percfd, lnk As String | Dim prog, cartella, s, percfd, lnk As String | ||
Dim bo As Boolean | Dim bo As Boolean | ||
− | + | ||
<FONT Color=gray>' '''''Indichiamo il programma specifico (ad esempio "vlc") che sta eseguendo il file mediale:'''''</font> | <FONT Color=gray>' '''''Indichiamo il programma specifico (ad esempio "vlc") che sta eseguendo il file mediale:'''''</font> | ||
prog = "vlc" | prog = "vlc" | ||
Print | Print | ||
− | + | ||
<FONT Color=gray>' ''Inserisce l'identificativo di ciascuna cartella presente in "/proc":''</font> | <FONT Color=gray>' ''Inserisce l'identificativo di ciascuna cartella presente in "/proc":''</font> | ||
For Each cartella In Dir("/proc", Null, gb.Directory) | For Each cartella In Dir("/proc", Null, gb.Directory) | ||
Riga 34: | Riga 34: | ||
Next | Next | ||
Next | Next | ||
− | + | ||
If Not bo Then Print "Il programma '" & prog & "' non sta eseguendo alcun file"; | If Not bo Then Print "Il programma '" & prog & "' non sta eseguendo alcun file"; | ||
If percfd = Null Then Print ", poiché non è attualmente aperto !" | If percfd = Null Then Print ", poiché non è attualmente aperto !" | ||
− | |||
− | |||
+ | End | ||
+ | |||
+ | |||
+ | Private Function CercaMime(audvid As String) As Boolean | ||
− | |||
− | |||
Dim s As String | Dim s As String | ||
− | + | ||
<FONT Color=gray>' ''Verifica se la dimensione del file collegato è maggiore di 0:''</font> | <FONT Color=gray>' ''Verifica se la dimensione del file collegato è maggiore di 0:''</font> | ||
If Stat(audvid).Size == 0 Then Return | If Stat(audvid).Size == 0 Then Return | ||
<FONT Color=gray>' ''Verifica se l'estensione del file collegato è presente nel file "/usr/share/mime/globs":''</font> | <FONT Color=gray>' ''Verifica se l'estensione del file collegato è presente nel file "/usr/share/mime/globs":''</font> | ||
If InStr(File.Load(GLOBS &/ s), "." & LCase(File.Ext(audvid))) Then Return True | If InStr(File.Load(GLOBS &/ s), "." & LCase(File.Ext(audvid))) Then Return True | ||
− | + | ||
− | + | End |
Versione attuale delle 20:09, 15 lug 2023
Mostriamo il seguente codice, adeguatamente commentato, per sapere quale file audio un apposito programma sta eseguendo.
Private Const GLOBS As String = "/usr/share/mime/globs" Public Sub Main() Dim prog, cartella, s, percfd, lnk As String Dim bo As Boolean ' Indichiamo il programma specifico (ad esempio "vlc") che sta eseguendo il file mediale: prog = "vlc" Print ' Inserisce l'identificativo di ciascuna cartella presente in "/proc": For Each cartella In Dir("/proc", Null, gb.Directory) ' Verifica se la cartella contiene il file "comm": If Not Exist("/proc" &/ cartella &/ "comm") Then Continue ' Carica il contenuto del file "comm": s = File.Load("/proc" &/ cartella &/ "comm") ' Verifica se il testo contenuto nel file "comm" è affine a quello presente nella variabile "prog".; ossia se la cartella corrente è relativa al processo del programma indicato nella variabile "prog": If s Not Like "*" & prog & "*" Then Continue percfd = "/proc" &/ cartella &/ "fd" ' Inserisce il nome di ciascun file di tipo "Collegamento simbolico" nella variabile "s": For Each s In Dir(percfd, Null, gb.Link) ' Verifica se il file individuato di tipo "Collegamento simbolico" è accessibile: If Not Access(percfd &/ s) Then Continue lnk = Stat(percfd &/ s).Link ' Verifica se il file collegato è accessibile: If Not Access(lnk) Then Continue ' Invoca la Procedura "CercaMime": bo = CercaMime(lnk) ' Mostra il percorso del file collegato ed attualmente eseguito dal programma audio/video utilizzato: If bo Then Print "Il programma '" & prog & "' sta eseguendo il file: \e[1m\e[31m"; lnk, "\e[0m"; Stat(lnk).Size; " byte" Next Next If Not bo Then Print "Il programma '" & prog & "' non sta eseguendo alcun file"; If percfd = Null Then Print ", poiché non è attualmente aperto !" End Private Function CercaMime(audvid As String) As Boolean Dim s As String ' Verifica se la dimensione del file collegato è maggiore di 0: If Stat(audvid).Size == 0 Then Return ' Verifica se l'estensione del file collegato è presente nel file "/usr/share/mime/globs": If InStr(File.Load(GLOBS &/ s), "." & LCase(File.Ext(audvid))) Then Return True End