Conoscere quale file audio un programma sta eseguendo
Vai alla navigazione
Vai alla ricerca
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