Conoscere quale file audio un programma sta eseguendo
Da Gambas-it.org - Wikipedia.
Versione del 15 lug 2023 alle 19:09 di Vuott (Discussione | contributi)
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