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()
+
  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'''
 
 
   
 
   
 +
End
 +
 +
 +
Private Function CercaMime(audvid As String) As Boolean
 
   
 
   
'''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'''
+
  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