Obligement - L'Amiga au maximum

Mercredi 19 décembre 2018 - 06:26  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : C - Créer un super Shell avec menu Intuition
(Article écrit par Frédéric Mazué et extrait d'Amiga News Tech - avril 1991)


Je vous propose aujourd'hui d'allier la convivialité du Workbench avec la rigueur du Shell. Comment ? Tout simplement en ajoutant un menu Intuition aux fenêtres Shell (ou CLI, cela s'entend). Ceci nous permettra d'utiliser depuis le Shell tous les raccourcis clavier que l'on voudra, avec en plus une option spécial fainéants : le seul fait d'insérer une disquette dans un lecteur quelconque en affichera le catalogue.

Une fenêtre Shell n'est ni plus ni moins qu'une fenêtre Intuition. Notre programme, lancé depuis cette fenêtre, doit tout d'abord en rechercher le pointeur. C'est très simple : la structure "Process" de notre programme contient un pointeur sur la console_task associée (le Shell). Il nous suffit d'envoyer à cette console_task un DosPacket de type ACTION_DISK_INFO avec en arg1, un pointeur sur une structure InfoData. En retour, on recevra le pointeur de la fenêtre utilisée par la console (pour en savoir plus sur les DosPacket, vous pouvez vous reporter à l'excellent article "Mettez un silencieux dans vos lecteurs de disquette").

Cette fenêtre, comme quelques essais permettent de s'en convaincre, n'utilise aucun drapeau IDCMP et ne comporte donc pas de port utilisateur. Il nous faudra donc d'abord créer un port, puis l'attacher à la fenêtre, modifier les drapeaux IDCMP puis installer le menu. Tout ceci ne mérite pas grandes explications car ce n'est que l'utilisation de routines système bien connues. Voilà, le menu est installé et nous pouvons déjà utiliser les raccourcis clavier ainsi définis, afin d'accéder ultra-rapidement à vos outils préférés (moi c'est Devpac 2 et Genam2/Monam2).

Catalogue automatique

Cela est rendu possible par le fait qu'un message Intuition est généré lorsqu'on insère une disquette. D'abord, il faut savoir que ce message sera envoyé à la fenêtre que celle-ci soit active ou pas. Ce sera donc à notre programme d'effectuer ce test en examinant ActiveWindow d'IntuitionBase.

Les routines qui déterminent dans quel lecteur la disquette a été insérée sont directement inspirées de VirusX de Steve Tibett. Afin d'éviter le sac de noeuds entre les sorties de plusieurs programmes, le catalogue est affiché dans une fenêtre DOS spécialement ouverte à cet effet. L'option catalogue automatique peut être désactivée par le menu.

Rendre la main proprement

Ce programme, écrit avec le Lattice 5.10, doit être relié avec cback.o, de façon à tourner en tâche de fond. Nous avons donc la situation suivante : deux programmes distincts utilisent la même console_task. C'est pour cela que vous ne pourrez pas ajouter une option "endcli" dans le menu.

L'option "quitter" stoppe le programme, mais laisse le Shell actif qui redevient un Shell classique. Si vous faites directement un "endcli" depuis le Shell, la fenêtre ne sera toutefois pas fermée pour la même raison. Il vous suffira alors d'actionner "Amiga-Q" (il serait bien sûr possible d'améliorer ceci, mais cela rallongerait considérablement le listing, donc je préfère vous laisser exercer votre sagacité).

Remarquez toutefois qu'il est impératif de supprimer tous les messages "pendants" au port de la fenêtre (fonction SafelyIDCMP) et d'effacer soi-même le port, sinon c'est le gourou assuré.

Utilisation du programme

Il y a deux manières de lier le SuperShell à un Shell standard :
  • Par simple appel depuis le Shell.
  • Mais vous pouvez aussi le placer au début du fichier Shell-Startup (ou Cli-Startup). Ainsi, tout Shell ouvert sera automatiquement un SuperShell.
C
C
C
C
C
C
C


[Retour en haut] / [Retour aux articles]