Bonjour à tous,

Je vais présenter la chose un peu différemment étant donné que j'ai résolu mon problème.
Donc pour être clair et concis, je veux palier au manque de musique dans emulationstation, en particulier lorsqu'on navigue dans son menu. Il va de soit que la musique doit se couper sitôt que l'on sort du front-end. Et pourquoi pas avec des commandes en batch. J'ai pu croiser pas mal de monde galérer sur ce problème, il y a bien une sorte de patch sur linux mais rien sous windows et tous les endroits ou j'ai pu jeter un oeil disaient que c’était plus ou moins impossible... Vous trouverez ci-après la solution dont il vous suffira d'adapter les quelques lignes de code à votre environnement.

Etude du cas, ce qu'il nous faut :
1 : définir si la fenêtre active est bien emulationstation.
2 : si oui, lancer une playlist si elle n'est pas déjà lancée, si non, arrêter la playlist et définir si emulationstation est toujours en marche.
3 : si emulationstation est toujours en marche, revenir a 1, si non, quitter.

Pour résoudre le problème de la fenêtre active, je suis passé par un script au3 (AutoIt) qui va m'inscrire dans un petit fichier ini le nom du programme actuellement au premier plan :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Global $vValue
$winList = WinList()
$sFilePath = "C:\Jeux\_Emulationstation\music.ini"
$vValue = "none"
CheckWindows($winList)

Func CheckWindows($aArray)
	For $i = 1 To Ubound($aArray) - 1
        If WinActive($aArray[$i][1]) Then $vValue = $aArray[$i][0]
    Next
	IniDelete($sFilePath, "Active Window", "Name")
	IniWrite($sFilePath, "Active Window", "Name", $vValue)
EndFunc
Vous trouverez facilement autoit que vous pouvez prendre en zip si vous n'aimez pas les installeurs. Apres quoi il faudra associer les fichiers d'extension au3 avec le logiciel.

Ce qui nous donne dans le fichier ini, si nous avons bien emulationstation en premier plan :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[Active Window]
Name=EmulationStation
Si c'est un batch qui se trouve au premier plan nous aurons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[Active Window]
Name=C:\Windows\system32\cmd.exe
Et voici le batch qu'il faut lancer pour automatiser tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@echo off
cd /d C:\
setlocal enabledelayedexpansion
set Name="EmulationStation"
set Music="0"
set Active="1"
set Value="null"

:Loop1
if %Music% EQU "0" (
goto :Active1 
)
if %Music% EQU "1" (
goto :Active2
)

:Active1
if %Active% EQU "1" (
goto :StartVlc
)
if %Active% EQU "0" (
goto :Loop2
)

:Active2
if %Active% EQU "1" (
goto :Loop2
)
if %Active% EQU "0" (
goto :Loop2
)

:StartVlc
CD "C:\Program Files (x86)\VideoLAN\VLC\"
start /min vlc.exe --playlist-autostart --repeat --random --playlist-tree "C:\le chemin du dossier avec les musiques\music\"
set Music="1"
set Active="1"

:Loop2
call "C:\Jeux\_Emulationstation\music.au3"
timeout /t 1 /nobreak>nul
for /f "delims== tokens=1,*" %%a in ('type "C:\Jeux\_Emulationstation\music.ini"') DO ( set Value=%%b
)

if "%Value%" EQU %Name% (
set Active="1" 
goto :Loop1
)
if "%Value%" NEQ %Name% (
set Active="0"
goto :CloseVlc
)

:CloseVlc
if %Music% EQU "0" goto :Bypass
taskkill /im vlc.exe /f
set Music="0"

:Bypass
timeout /t 2 /nobreak>nul
cd /d C:\
tasklist /FI "IMAGENAME eq emulationstation.exe" 2>NUL | find /I /N "emulationstation.exe">NUL
if "%ERRORLEVEL%" EQU "0" (
goto :Loop1
)
if "%ERRORLEVEL%" NEQ "0" (
exit
)
Avec le fatigue j'avais fait de grossières erreurs d'espace qui me vidaient mes variables. Maintenant tout marche correctement.
Alors évidemment ce n'est pas très jojo mais en attendant ça fonctionne. Mais si quelqu'un pense a une méthode plus élégante je suis preneur.