Hotline pc one faq windows  
Hotline pc line
Hotline PC - contact Hotline PC - Vista Hotline PC - Windows XP Hotline PC - dossiers Hotline PC - registre Hotline PC - reseaux Hotline PC - applications Hotline PC - ms-dos Hotline PC - gravure Hotline PC - autres
Google
 
Forum
Fonds d'écran
Sonneries
Sonneries






CD Shell : créer des menus interactifs

Un didacticiel concernant CD Shell.

Dernière mise à jour : 10/10/2005

Créer un menu interactif
Les images
Ecran de démarrage
Script de démarrage
Principales commandes
Principales fonctions
Utiliser les variables
Gérer les caractères accentuées
Tester le menu de démarrage

- Créer un menu interactif avec "CD Shell" :
"CD Shell" se télécharge à partir de cette adresse : www.cdshell.org/download/download.html. Ce programme est en "Freeware" à partir du moment qu'il n'en est pas fait une exploitation commerciale.
Vous obtiendrez une archive nommée cds2106.zip qu'il faut décompresser. Double-cliquez sur le fichier obtenu afin de lancer l'installation du programme.
Un peu de théorie maintenant ! Schématiquement, vous avez besoin d'un répertoire nommé Boot que vous allez extraire à la racine de votre image puis de définir le fichier Loader.bin comme étant le secteur d'amorçage du disque. Le fichier de script Cdshell.ini sert à définir le contenu de votre menu de démarrage.
Définition : Un fichier de script est un programme comportant une suite d'instructions directement interprétables par votre machine.
Une fois que les fichiers seront placés il vous suffira de graver l'image disque en respectant ces spécifications :
Fichier image : Loader.bin
Type d'émulation :Pas d'émulation
Nombre de secteur lus : 4
Lire segments des secteurs (hex) 07C0
Signalons qu'il existe un mode Console qui s'exécute en tâche de fond de celui de l'interface graphique.
Définition : Nous désignons par ce terme une fenêtre de terminal dans lequel on peut saisir des instructions. Nopus parlons alors de mode "Console" à l'opposé du mode d'interface graphique qui est, il faut bien l'avouer, nettement plus convivial !
Nous allons maintenant passer en revue les différents point vous permettant de comprendre les spécifications et la syntaxe utilisée pour créer un menu de démarrage avec ce programme.

- Les images :

Les images Bitmaps (format BMP) doivent avoir la résolution suivante : 320x240 et une profondeur de couleur de 8 bits (par exemple; 256 couleurs). Elles doivent toutes posséder l'extension .bmp. Vous devez convertir les images dans un format utilisé par "Cd Shell" et appelé CSI. Un outil fourni avec le programme permet de le faire très facilement (\Tools\Convert\Convert.exe). Voici un exemple de syntaxe : convert -bmp2csi -o Image.csi Image.bmp
Définition : La résolution d'écran définit la représentation de l'image sur un écran. Elle se mesure comme un rapport entre la largeur et la hauteur exprimé en pixels. La profondeur de couleur est le nombre de bits associés à chaque couleur primaire d'un pixel. Par exemple, une profondeur de 8 bits est égale à 256 couleurs.

- L'écran de démarrage :
Vous avez la possibilité de définir un écran de démarrage qui sera actif durant 5 secondes. L'image utilisée doit correspondre à la résolution suivante : 320x240x8 ou 640x480x24. Le fichier image doit être nommé Splash.csi et être placé dans \DVD\BOOT\graphics.

- Le script de démarrage :
Les commandes qui seront contenues dans le script cdshell.ini utilisent une syntaxe particulière que nous allons expliquer. Voici tout d'abord quelques règles :
* Dans l'explication d'une commande, les paramètres placés entre < et > sont obligatoires. Ceux qui sont placés entre crochets sont optionnels.
* Les mots-clés à quelques exceptions prêtes ne sont pas sensibles à la casse.
* Les chemins et les noms de fichiers sont relatifs au répertoire courant sauf s'ils sont précédents d'un antislash. Dans ce cas, ils sont relatifs au répertoire racine. Comparez ces deux commandes :
type files/fichier.txt : le chemin du fichier nommé fichier.txt est relatif au répertoire courant.
type \image\sector.bin : le chemin du fichier sector.bin est relatif au répertoire racine.
Un fichier de script doit se terminer par la commande End.

- Les commandes :
Voici les principales commandes dont vous allez pouvoir vous servir dans un fichier de script.
* About [more] : affiche la version actuelle du descripteur de démarrage.
* Boot <lecteur> : la commande Boot initialise le processus de démarrage à partir du disque local. Nous nous servons des identificateurs du Bios : 0x00: lecteur de disquette, 0x80: premier lecteur de disque, etc. Vous pouvez aussi utiliser différents identifiants de raccourcis comme ceux-ci : $fda, $fdb, $hda, $hdb, $hdc, and $hdd. Voici un exemple :
if $lastKey == key[o]; then boot 0x00
* Call <étiquette> : cette commande permet d'appeler une sous-routine à l'intérieur de votre script (à la manière de la commande Goto sous Ms-Dos). La commande Return dit être placée à la fin de la sous-routine afin de revenir à la commande suivant l'appel vers l'étiquette. Voici un exemple :
call Entete
Entete:
set textColor= color[grey on black]
return
* Cd <chemin> : cette commande permet de changer de répertoire. De la même manière vous pouvez remonter au répertoire parent en inscrivant cette instruction : cd ..
* Chain <Nom_Fichier> ou Chain <Nom_Fichier> <adresse> [start] : cette commande permet de charger le fichier image du secteur de démarrage d'un Cd-Rom d'installation. Cette commande ne convient pas aux images qui requièrent une émulation matérielle. Le fichier image sera limité à 64 Ko.
* Le drapeau Adresse définit le segment de mémoire physique qui est adressé. Cette valeur doit être au format hexadécimal. La valeur par défaut est celle-ci : 0x7C00.
* Le drapeau Start définit l'offset relatif à cette adresse. L'emploi de ce paramètre nécessite que le précédent soit déclaré. A priori, vous pouvez utiliser les paramètres par défaut et vous contenter de ce type de déclaration : chain /NT4S.DAT
Définition : Un segment désigne chaque bloc de mémoire faisant 64 Ko. L'adressage de la mémoire utilise deux registres. Le premier désigne le bloc qui contient l'octet "ciblé". Le second appelé offset définit la position de cet octet dans le bloc.
* Clear ou Cls : réinitialise le contenu de la fenêtre en replaçant le prompt en haut à gauche de l'écran.
* Dir [d/f] ou Ls : cette commande permet de lister le contenu des répertoires. Le drapeau d force l'affichage des dossiers uniquement alors que le drapeau f celui des fichiers.
* Else <Commande> : permet d'exécuter une commande si la condition If est fausse. Il est permet de spécifier plusieurs commandes "Sinon". Voici un exemple :
if $lastKey == key[o]; then boot 0x80
else exit
* End : cette commande termine le script.
* Goto <étiquette> : cette commande permet d'appeler une autre ligne du script. Voici un exemple :
goto menu
menu:
print " Installer Windows :
* If <expression> : cette commande permet de poser une condition. Voici un exemple :
if $lastKey == key[F1]; then goto Aide
* List <commands/functions/keys/modules> : permet de lister les commandes/fonctions/clés/modules qui sont disponibles.
* Memdisk <Nom_Fichier> : cette commande permet de charger en mémoire un fichier image d'une disquette ou d'un disque "bootable".
Le paramètre <Nom_Fichier> définit l'emplacement relatif et le nom du fichier image : memdisk /msnet.img
* More <Nom_Fichier> ou Type : cette commande permet d'afficher le contenu d'un fichier texte. Les lignes de plus de 255 caractères seront coupées.
* Print [l/c/r] <message> : cette commande permet d'afficher un message à l'écran.
Les paramètres optionnels (gauche/centré/droit) servent à justifier le texte par rapport à l'écran. Chaque ligne contient 80 caractères au maximum. Le message doit être placé entre guillemets. Les séquences suivantes sont autorisées :
\\ : antislash.
\" : guillemets.
\n : nouvelle ligne.
\t : tabulation.
\ac : change pour un alignement centré et démarre une nouvelle ligne.
\al : change pour un alignement sur la gauche et démarre une nouvelle ligne.
\ar : change pour un alignement sur la droit et démarre une nouvelle ligne.
\c(#) : change de couleur. La couleur spécifiée entre les parenthèses peut être au format décimal ou hexadécimal.
\cxx : revient à la couleur par défaut du texte.
\cXX : revient à la couleur par défaut du texte surligné.
* Reboot [warm/cold] : effectue par défaut un redémarrage à chaud (action par défaut) ou à froid (/cold).
* Return : cette commande permet de retourner à la routine qui a passé l'instruction call.
* Script <Nom_Fichier> : cette commande appelle un fichier de script : script cdshell.ini.
* Set <variable> = ["chaîne"] ou Set <variable> = [expression] : permet de définir une variable. Les caractères permis sont : a-z, A-Z, 0-9 et _.
La première forme permet de définir une variable qui sera égale à une chaîne de caractères. La chaîne de caractères soit être placée entre guillemets. Voici un exemple :
set textColor= color[grey on black]
La variable textColor permet de définir la couleur du texte comme étant en gris avec un fond noir.
La seconde forme définit une expression mathématique et la stocke en tant que variable (qui sera alors égale au résultat sous forme de chaîne de caractères). Voici un exemple :
set Ma_Variable = 1 + 2
La variable Ma_Variable est donc égale au chiffre 3.
* Show console ou Show image <Nom_Fichier.bmp] ou Show image <Nom_Fichier.csi> [Nom_Image.bmp] : cette commande permet de contrôler ce que les utilisateurs visualise quand "CD Shell" fonctionne.
Étant que la Console fonctionne en tâche de fond, la commande Show console permet de permuter en mode texte sans que l'on puisse voir l'interface graphique de CD Shell.
La commande Show image bascule l'écran en mode d'interface graphique. Toutes les commandes sont prises en compte mais n'affichent pas de sortie d'écran (alors que ces sorties seraient visibles en mode Console).
Un fichier .bmp peut être défini dans le cas où la machine ne pourrait afficher l'image en haute résolution CSI. Voici un exemple :
#if $ModeGraphique; then show image menu.csi menu.bmp
* Then <command> : permet de spécifier une commande si la condition If est vraie. Vous pouvez exécuter de multiples commandes "alors" à la suite d'une seule condition. Voici un exemple :
if $24Heures == 1; then set time = "$timeHour:$timeMinute"; then return

- Les fonctions :
Une fonction va vous servir à définir une valeur que vous utiliserez pour valider une expression.
* Bootcheck : cette fonction permet de vérifier si un lecteur est "amorçable". Elle va donc retourner différents codes :
0 : le média n'est pas "bootable".
1 : le périphérique contient un secteur de boot valide.
2 : le secteur d'enregistrement de la zone amorce (MBR) contient une partition "bootable".
3 : la partition "bootable" contient bien un secteur de boot.
Les raccourcis vers les identifiants des lecteurs peuvent être aussi employés comme paramètres. Voici un exemple que nous pouvons traduire de cette façon : "Si le premier disque dur (0x80) contient une partition bootable alors démarre depuis le disque dur".
if bootCheck[0x80] == 3; then boot 0x80
* Color : cette fonction retourne une valeur numérique définissant une couleur représentée par des mots-clés. La couleur de premier-plan et d'arrière-plan sera respectivement définie. Elles doivent être séparées par le mot-clé On. Les noms de couleurs autorisés sont les suivants : black (noir), blue (bleu), green (vert), cyan, red (rouge), magenta, brown (brun), grey (gris), brightgrey (gris clair), brightblue, brightgreen, brightcyan, brightred, brightmagenta, yellow (jaune) et white (blanc).
* Defined : cette fonction permet de vérifier l'existence d'une variable. Le code de sortie sera 1 si le fichier est présent et de zéro dans le cas contraire.
* Key : cette fonction permet d'identifier les touches du clavier qui ont été utilisée. Voici un exemple :
if $lastKey == key[F1]; then goto Aide
En termes clairs cela signifie : "Si la dernière touche appuyée a été la touche F1 alors ouvres le menu Aide".
Le tableau suivant récapitule le code défini pour chaque touche :

Identificateur de clé : Touche correspondante
back : Espacement arrière
bracket : Crochet fermant : ]
del : Suppr
down : Flèche vers le bas
end : Fin
enter : Entrée
esc : Echap
home : Origine
ins : Inser
left : Flèche vers la gauche
pgdn : Page suivante
pgup : Page précédente
right : Flèche vers la droite
space : Espace
tab : Tabulation
up : Flèche vers le haut

- Les variables :
Quand une variable est utilisée vous devez la faire précédée du signe $. Ce signe vous permet également d'afficher certains caractères réservés sans que CD Shell les interprète comme la fin d'une commande ou le début d'un commentaire. Ainsi les expressions : $$ - $; - $# peuvent être utilisées pour afficher ceci : $ - ; - #
Par ailleurs, il est possible de placer une variable entre parenthèses. Voici un exemple :
# Nous allons afficher le mot "Informatique"
set un = "Infor"
set deux = "ma"
print "$un$(deux)tique"
S'il vous est possible de créer des variables de toutes pièces, un certain nombre de variables internes sont prédéfinies. Voici les plus utilisées :
* $appname : retourne le nom du programme "CD Shell".
* $dateDay : retourne la date d'aujourd'hui.
* $dateMonth : retourne le nom du mois.
* $dateYear : retourne le nom de l'année.
* $fda $fdb : retourne les identificateurs employés par le Bios pour les deux premiers lecteurs de disquettes.
* $hda $hdb $hdc $hdd : retourne les identificateurs employés par le Bios pour les quatre premiers lecteurs de disques.
* $lastKey : stocke la valeur numérique correspondant à la dernière touche pressée.
if $lastKey == key[enter]
then print "Vous avez appuyé sur la touche Entrée."
* $mouse : vérifie si une souris compatible PS/2 est connectée ou non. Si vous possédez une souris USB, activez la fonction correspondante dans le Bios ("Enable Legacy Mouse").
* $textColor : définit ou vérifie la couleur par défaut du texte.
* $timeHour - $timeMinute - $timeSecond : renvoie un horodatage en heures, minutes et secondes.
* $vesa : permet de vérifier si CD Shell est capable d'afficher des images CSI. Dans ce cas les extensions Vesa du Bios doivent être supportées.
Définition : le terme VESA ("Video Electronics Standards Association") désigne un standard commun à toutes les cartes graphiques et qui définit un certain nombre de nouvelles fonctionnalités dans le BIOS. Ces dernières permettent entre autre d'envoyer un certain nombre d'informations aux programmes qui utilisent les fonctions graphiques de l'ordinateur.
* $version : retourne la version du programme.
* $vga : permet de vérifier si le mode graphique minimal ("VGA") est supporté.

- Gérer les caractères accentuées dans les commandes du menu de démarrage :

Vous devez dans ce cas utiliser un éditeur de texte qui gère les caractères ANSI. Les différences de polices de caractères entre la norme Ansi (Windows) et OEM (Ms-Dos) font que si vous vous servez d'un éditeur de texte comme le Bloc-Notes les caractères accentués ne s'afficheront pas correctement dans les sorties écran en mode "Console". Ainsi, la phrase "Je répète : "Vous êtes un entêté"" s'affichera comme cela : Je rÚpÞte : "Vous Ûtes un entÛtÚ". Il y a différentes solutions :
Vous pouvez toujours vous servir de l'éditeur de texte prévu dans toutes les versions de Windows : "Edit".
ll existe de nombreux programmes vous permettant d'opérer la conversion Ansi vers OEM et vice-versa. "OEMANSI.exe" est un programme écrit en français que vous pouvez télécharger à partir de cette adresse : http://perso.wanadoo.fr/andre.araste/tele2.htm. Décompressez l'archive ZIP nommée Oemansi.zip puis double-cliquez sur ce fichier exécutable : Setup.exe afin de lancer l'installation de ce logiciel.
Imaginons que notre fichier à convertir s'appelle Test.bat suivez la procédure suivante :
1) Cliquez sur Démarrer/Tous les programmes/OEMANS/OEMANSI.
2) Cliquez sur le bouton Ouvrir Fichier.
3) Dans la liste déroulante Fichiers de type :, sélectionnez Tous les fichiers (*.*) puis votre fichier Batch.
4) Cochez le bouton radio ANSI(Win) puis la flèche dirigée vers le bas.
Il est possible d'effectuer l'opération inverse !
5) Cliquez sur le bouton Sauvegarde OEM puis lancer le processus de conversion.
6) Confirmez le remplacement ou non de l'ancienne version.

- Tester le menu de démarrage :
Le débogage du programme se fait très facilement !
1) Dans le dossier cds2106, ouvrez un dossier nommé Boot.
2) Double-cliquez sur un fichier nommé Cdshw.com.
Par défaut, un fichier nommé cdshell.ini est déjà placé. Il suffit de le remplacer par votre propre fichier de script.
3) Afin de quitter le mode débogage, revenez en mode Console puis saisissez : exit
Définition : En anglais debug, ce terme désigne les opérations consistant à chercher les éventuelles erreurs (bogues) que peuvent présenter un programme.



blog, bookmark, newsletter


abc-blagues - infopage - les societes - entrepreneurs de france - flashmeat topsitefr - radioduweb
c-rigolo - woopami - rire-et-sourire - pubstv - widouf - planete-nokia - streaming-fr

© 2001-2008 Hotline-PC.org. Tous droits réservés. Ce site fait régulièrement l'objet d'un marquage IDDN.IDDN Certification
Un site du réseau : 

Contact - Plan du site - Notice légale
Blog Bookmark Newsletter