Il fallait pourvoir monter les dossiers, des fichiers images de disquettes ou disque dur, et des fichier iso de cd-rom. J'ai poussé un peu plus loin ma réflexion pour y ajouter un historique des jeux joués pour pouvoir continuer un jeu commencé ou garder la trace des dernier jeux joués.
Pour ceux qui n'en n'auraient jamais entendu parler, je mets un lien vers le site officiel qui vous aidera surement à comprendre à quoi il sert: https://www.dosbox.com/
Donc voilà le script qui ne casse pas des briques, mais effectue les actions qu'on lui demande:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#Region ### START Koda GUI section ### Form=
$version="0.4"
$counthist=1
$dosboxhist = FileExists(@TempDir& "\dbxhist.conf"); vérification de l’existence du fichier gérant l'historique des jeux ouverts
if $dosboxhist Then
$tempfile= @TempDir & "\dbxhist.conf"
Else
FileWrite(@TempDir & "\dbxhist.conf","Historique de dosboxmount")
$tempfile= @TempDir & "\dbxhist.conf"
for $i = 1 to 5 Step 1
IniWriteSection($tempfile,"histo" & $i,"label=Vide" & @CRLF & "commande=")
next
iniwritesection($tempfile,"Compteur","valeur=0")
EndIf
$histitem1=IniRead($tempfile,"histo1","label","Vide")
$histitem2=IniRead($tempfile,"histo2","label","Vide")
$histitem3=IniRead($tempfile,"histo3","label","Vide")
$histitem4=IniRead($tempfile,"histo4","label","Vide")
$histitem5=IniRead($tempfile,"histo5","label","Vide")
$Form1 = GUICreate("DosBoxMount !", 194, 159, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("&Monter...")
$MenuItem2 = GUICtrlCreateMenu("&Historique...")
$menuitem3 = GUICtrlCreateMenu("Aide")
$idFileItem1 = GUICtrlCreateMenuItem("une image (*.img...)", $MenuItem1)
$idFileItem2 = GUICtrlCreateMenuItem("un iso", $MenuItem1)
$idFileItem3 = GUICtrlCreateMenuItem("un repertoire", $MenuItem1)
$idFileItem4 = GUICtrlCreateMenuItem("&Quitter", $MenuItem1)
$histfileitem1 = GUICtrlCreateMenuItem($histitem1,$MenuItem2)
$histfileitem2 = GUICtrlCreateMenuItem($histitem2,$MenuItem2)
$histfileitem3 = GUICtrlCreateMenuItem($histitem3,$MenuItem2)
$histfileitem4 = GUICtrlCreateMenuItem($histitem4,$MenuItem2)
$histfileitem5 = GUICtrlCreateMenuItem($histitem5,$MenuItem2)
$aideitem=GUICtrlCreateMenuItem("A propos",$menuitem3)
;~ GUICtrlSetState(-1, $GUI_CHECKED)
GUISetBkColor(0x000080)
fileinstall(".\dosboxmount.jpg", @ScriptDir & "\dosboxmount.jpg"); installation d'une image de fond (qui n'est pas obligatoire)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\dosboxmount.jpg", 0, 0, 193, 137)
;~ $dosbox = FileExists(@ScriptDir & "\dosbox.exe"); le programme fonctionne avec dosbox, il faut donc le placer dans le même répertoire que celui-ci
if $dosbox Then
$dosbox = @scriptdir & "\dosbox.exe"
Else
msgbox(0,"Erreur","Impossible de trouver Dosbox.exe" & @CRLF & "placer ce fichier au même niveau que Dosbos.exe, Au revoir !")
exit
EndIf
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idFileItem1
$counthist = IniRead($tempfile,"compteur","valeur",1); un compteur qui permet de gérér un historique des fichiers ouverts
$file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images disque et disquettes (*.ima;*.img)", $FD_FILEMUSTEXIST); ouverture des images diskettes ou disque dur (.img, .ima ,ect...)
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$size = FileGetSize($file2open); récupération de la taille du fichier pour determiner comment l'ouvrir
If $size < 2949121 Then ; c'est une image diskette
$file="'" & $file2open & "'"
$file="""imgmount a " & $file & "-t floppy""" ; création de la ligne de commande à envoyer à dosbox
$line = " -c " & $file & " -c a: -c dir"
$counthist = $counthist + 1 ; incrementation du compteur
if $counthist > 5 Then ; l'historique permet de faire tourner les 5 derniers jeux joués
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist) ; écriture du compteur dans un fichier ini dans %temp%
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
Else
$file="'" & $file2open & "'" ; si ce n'est pas une image diskette alors on monte un disque dur
$file="""imgmount c " & $file & """"
$line = " -c " & $file & " -c c: -c dir"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
EndIf
executer($line)
EndIf
Case $idFileItem2
$counthist = IniRead($tempfile,"compteur","valeur",1)
$file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images iso (*.iso)", $FD_FILEMUSTEXIST); ouvreture d'une image CD .iso
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$file="'" & $file2open & "'"
$file="""imgmount d " & $file & "-t cdrom"""
$line = " -c " & $file & " -c d:"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
executer($line)
EndIf
Case $idFileItem3
$counthist = IniRead($tempfile,"compteur","valeur",1)
$file2open = FileSelectFolder("Selection du dossier", @ScriptDir); monter un dossier présent directement dans le disque de l'ordinateur
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$file="'" & $file2open & "'"
$file="""mount c " & $file & """"
$line = " -c " & $file & " -c c:"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
;~ MsgBox(0,"",$line)
executer($line)
EndIf
case $idFileItem4
Exit
case $histfileitem1 ; gestion de l'historique, surement à améliorer car beaucoup de code redondant
$file = IniRead($tempfile,"histo1","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo1","commande","")
Executer($line)
EndIf
case $histfileitem2
$file = IniRead($tempfile,"histo2","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo2","commande","")
Executer($line)
EndIf
case $histfileitem3
$file = IniRead($tempfile,"histo3","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo3","commande","")
Executer($line)
EndIf
case $histfileitem4
$file = IniRead($tempfile,"histo4","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo4","commande","")
Executer($line)
EndIf
case $histfileitem5
$file = IniRead($tempfile,"histo5","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo5","commande","")
Executer($line)
EndIf
case $aideitem
MsgBox(4096,"Dosbox mount" & " version " & $version,"Concept et devellopement : -Marc GRAZIANI-")
EndSwitch
WEnd
Func executer($file); la fonction qui permet de passer les paramètres a DOSBOX.
ShellExecute($dosbox,$file)
EndFunc ;==>executer
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#Region ### START Koda GUI section ### Form=
$version="0.4"
$counthist=1
$dosboxhist = FileExists(@TempDir& "\dbxhist.conf"); vérification de l’existence du fichier gérant l'historique des jeux ouverts
if $dosboxhist Then
$tempfile= @TempDir & "\dbxhist.conf"
Else
FileWrite(@TempDir & "\dbxhist.conf","Historique de dosboxmount")
$tempfile= @TempDir & "\dbxhist.conf"
for $i = 1 to 5 Step 1
IniWriteSection($tempfile,"histo" & $i,"label=Vide" & @CRLF & "commande=")
next
iniwritesection($tempfile,"Compteur","valeur=0")
EndIf
$histitem1=IniRead($tempfile,"histo1","label","Vide")
$histitem2=IniRead($tempfile,"histo2","label","Vide")
$histitem3=IniRead($tempfile,"histo3","label","Vide")
$histitem4=IniRead($tempfile,"histo4","label","Vide")
$histitem5=IniRead($tempfile,"histo5","label","Vide")
$Form1 = GUICreate("DosBoxMount !", 194, 159, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("&Monter...")
$MenuItem2 = GUICtrlCreateMenu("&Historique...")
$menuitem3 = GUICtrlCreateMenu("Aide")
$idFileItem1 = GUICtrlCreateMenuItem("une image (*.img...)", $MenuItem1)
$idFileItem2 = GUICtrlCreateMenuItem("un iso", $MenuItem1)
$idFileItem3 = GUICtrlCreateMenuItem("un repertoire", $MenuItem1)
$idFileItem4 = GUICtrlCreateMenuItem("&Quitter", $MenuItem1)
$histfileitem1 = GUICtrlCreateMenuItem($histitem1,$MenuItem2)
$histfileitem2 = GUICtrlCreateMenuItem($histitem2,$MenuItem2)
$histfileitem3 = GUICtrlCreateMenuItem($histitem3,$MenuItem2)
$histfileitem4 = GUICtrlCreateMenuItem($histitem4,$MenuItem2)
$histfileitem5 = GUICtrlCreateMenuItem($histitem5,$MenuItem2)
$aideitem=GUICtrlCreateMenuItem("A propos",$menuitem3)
;~ GUICtrlSetState(-1, $GUI_CHECKED)
GUISetBkColor(0x000080)
fileinstall(".\dosboxmount.jpg", @ScriptDir & "\dosboxmount.jpg"); installation d'une image de fond (qui n'est pas obligatoire)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\dosboxmount.jpg", 0, 0, 193, 137)
;~ $dosbox = FileExists(@ScriptDir & "\dosbox.exe"); le programme fonctionne avec dosbox, il faut donc le placer dans le même répertoire que celui-ci
if $dosbox Then
$dosbox = @scriptdir & "\dosbox.exe"
Else
msgbox(0,"Erreur","Impossible de trouver Dosbox.exe" & @CRLF & "placer ce fichier au même niveau que Dosbos.exe, Au revoir !")
exit
EndIf
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idFileItem1
$counthist = IniRead($tempfile,"compteur","valeur",1); un compteur qui permet de gérér un historique des fichiers ouverts
$file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images disque et disquettes (*.ima;*.img)", $FD_FILEMUSTEXIST); ouverture des images diskettes ou disque dur (.img, .ima ,ect...)
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$size = FileGetSize($file2open); récupération de la taille du fichier pour determiner comment l'ouvrir
If $size < 2949121 Then ; c'est une image diskette
$file="'" & $file2open & "'"
$file="""imgmount a " & $file & "-t floppy""" ; création de la ligne de commande à envoyer à dosbox
$line = " -c " & $file & " -c a: -c dir"
$counthist = $counthist + 1 ; incrementation du compteur
if $counthist > 5 Then ; l'historique permet de faire tourner les 5 derniers jeux joués
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist) ; écriture du compteur dans un fichier ini dans %temp%
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
Else
$file="'" & $file2open & "'" ; si ce n'est pas une image diskette alors on monte un disque dur
$file="""imgmount c " & $file & """"
$line = " -c " & $file & " -c c: -c dir"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
EndIf
executer($line)
EndIf
Case $idFileItem2
$counthist = IniRead($tempfile,"compteur","valeur",1)
$file2open = FileOpenDialog("Selection du jeu", @ScriptDir, "Images iso (*.iso)", $FD_FILEMUSTEXIST); ouvreture d'une image CD .iso
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$file="'" & $file2open & "'"
$file="""imgmount d " & $file & "-t cdrom"""
$line = " -c " & $file & " -c d:"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
executer($line)
EndIf
Case $idFileItem3
$counthist = IniRead($tempfile,"compteur","valeur",1)
$file2open = FileSelectFolder("Selection du dossier", @ScriptDir); monter un dossier présent directement dans le disque de l'ordinateur
If @error Then
ContinueLoop
Else
$namehisto = $file2open
$file="'" & $file2open & "'"
$file="""mount c " & $file & """"
$line = " -c " & $file & " -c c:"
$counthist = $counthist + 1
if $counthist > 5 Then
$counthist=1
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
Else
IniWriteSection($tempfile,"Compteur","valeur=" & $counthist)
IniWriteSection($tempfile,"histo" & $counthist,"label=" & $namehisto & @CRLF & "commande=" & $line)
EndIf
;~ MsgBox(0,"",$line)
executer($line)
EndIf
case $idFileItem4
Exit
case $histfileitem1 ; gestion de l'historique, surement à améliorer car beaucoup de code redondant
$file = IniRead($tempfile,"histo1","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo1","commande","")
Executer($line)
EndIf
case $histfileitem2
$file = IniRead($tempfile,"histo2","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo2","commande","")
Executer($line)
EndIf
case $histfileitem3
$file = IniRead($tempfile,"histo3","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo3","commande","")
Executer($line)
EndIf
case $histfileitem4
$file = IniRead($tempfile,"histo4","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo4","commande","")
Executer($line)
EndIf
case $histfileitem5
$file = IniRead($tempfile,"histo5","label","")
if $file = "Vide" Then
ContinueLoop
Else
$line=IniRead($tempfile,"histo5","commande","")
Executer($line)
EndIf
case $aideitem
MsgBox(4096,"Dosbox mount" & " version " & $version,"Concept et devellopement : -Marc GRAZIANI-")
EndSwitch
WEnd
Func executer($file); la fonction qui permet de passer les paramètres a DOSBOX.
ShellExecute($dosbox,$file)
EndFunc ;==>executer

J'espère que ce script sera utile à certains qui comme moi cherchaient une solution pour lancer ses jeux rapidement